所以我当前正在根据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)
}
}
无论如何,这根本不起作用。 我的船顺时针或逆时针旋转精确,编译器接受此但它与屏幕上的移动无关。
出了什么问题?
答案 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一点