所以我目前正在基于 bool 顺时针/逆时针函数旋转 Sprite 。
这是我基于此进行的船舶移动编码...
func movesprite(方向方向:rotationDirection) {
// Moves sprite left or right dependent on rotation //
let movespriteLeft = SKAction.moveByX(-100, y: 0, duration: 1)
let movespriteRight = SKAction.moveByX(100, y: 0, duration: 1)
if sprite == (direction == .clockwise) {
sprite.runAction(moveshipLeft)
}
else if sprite == (direction == .counterClockwise) {
sprite.runAction(moveshipRight)
}
}
无论如何,这似乎根本不起作用。 我的船确实顺时针或逆时针旋转,编译器接受这一点,但它对屏幕上的移动没有影响。
出了什么问题?
最佳答案
moveByX/Y 根据屏幕坐标而不是飞船的位置移动 Sprite ,因此移动将始终基于 x 或 y 轴。您需要在 moveby 中加入一些三角函数(sin 和 cos),以使其按照您想要的路径移动:
let movespriteLeft = SKAction.moveByX(-100 * sin(ANGLE), y: -100 * -cos(ANGLE), duration: 1)
let movespriteRight = SKAction.moveByX(100 * sin(ANGLE), y: 100 * -cos(ANGLE), duration: 1)
其中 ANGLE 是从 0 到 2PI 的 randian 值
根据您的坐标系,您可能需要稍微尝试一下 sin 和 cos
关于swift - 根据旋转移动 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33222128/