根据旋转移动精灵

Move sprite based upon rotation

所以我目前正在根据 bool 顺时针/逆时针函数旋转精灵。

这是我基于此对船舶移动进行的编码...

func movesprite(direction direction: 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 根据屏幕坐标移动您的精灵,而不是您的船的位置,因此移动将始终基于 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