我正在尝试制作一个简单的自上而下的汽车游戏,我想知道 SpriteKit 是否有办法根据当前方向简单地移动对象?
我相信 Scratch.com 有类似的功能,您可以通过局部坐标或全局坐标移动精灵。例如,如果您有一个面向屏幕的角的精灵,您可以更改其局部 x 坐标以将其移向该角,或者您可以更改其全局 x 坐标并将其向右移动。
SpriteKit 有类似的功能吗?我想设置汽车的局部速度,但我只能想办法设置它的全局速度。如果我想通过设置它的全局速度来获得相同的效果,那么我必须根据精灵的旋转成比例地操纵 dx 和 dy 变量,这比我想做的要复杂一些。
我试图通过全局坐标移动它,但我需要计算两个 dx 和 dy 值以生成指向汽车指向方向的向量。
你有两个选择:
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 :)