SpriteKit 有精灵局部坐标系吗?

问题描述 投票:0回答:1

我正在尝试制作一个简单的自上而下的汽车游戏,我想知道 SpriteKit 是否有办法根据当前方向简单地移动对象?

我相信 Scratch.com 有类似的功能,您可以通过局部坐标或全局坐标移动精灵。例如,如果您有一个面向屏幕的角的精灵,您可以更改其局部 x 坐标以将其移向该角,或者您可以更改其全局 x 坐标并将其向右移动。

SpriteKit 有类似的功能吗?我想设置汽车的局部速度,但我只能想办法设置它的全局速度。如果我想通过设置它的全局速度来获得相同的效果,那么我必须根据精灵的旋转成比例地操纵 dx 和 dy 变量,这比我想做的要复杂一些。

我试图通过全局坐标移动它,但我需要计算两个 dx 和 dy 值以生成指向汽车指向方向的向量。

swift sprite-kit coordinates local
1个回答
0
投票

你有两个选择:

1。让汽车成为

SKNode

的孩子

这样你就可以将 SKNode 旋转到你想要的任何方向,然后只需做

car.position.x += someAmount
就可以将你的车朝那个方向移动。您不需要计算自己的 dx 和 dy。汽车的 x 坐标基本上对应于 SKNode 的方向。

2。自己计算(这并不复杂)

我为此写了一个简单的函数:

func move(_ sprite: SKSpriteNode, by amount: Double) {
    sprite.position.x += CGFloat(cos(sprite.zRotation)) * amount
    sprite.position.y += CGFloat(sin(sprite.zRotation)) * amount
}

根据我对您问题的理解,选项 1 是您理想的解决方案。如果这些都不能满足您的需求,请发表评论,我会尽力帮助您。

欢迎来到 StackOverflow :)

© www.soinside.com 2019 - 2024. All rights reserved.