根据轮换

时间:2015-10-19 19:15:01

标签: swift sprite-kit rotation sprite

所以我当前正在根据bool顺时针/逆时针旋转功能旋转精灵。

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

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)
    }

}

无论如何,这根本不起作用。 我的船顺时针或逆时针旋转精确,编译器接受此但它与屏幕上的移动无关。

出了什么问题?

1 个答案:

答案 0 :(得分:0)

moveByX / Y根据屏幕坐标移动您的精灵,而不是您的船的位置,因此移动将始终基于x或y轴。你需要在你的移动中加入一些触发函数(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值

根据你的坐标系,你可能不得不玩罪和cos一点