swift - 根据旋转移动 Sprite

标签 swift sprite-kit rotation sprite

所以我目前正在基于 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/

相关文章:

swift - 如何在 SKLabelNode 中对不断增加的数字进行动画处理

swift - SpriteKit Action ,如 "Skew"或 "Distort"

ios - 边界功能不会阻止 Sprite 离开

actionscript-3 - 如何根据光标位置检测旋转元素的元素转换类型(缩放、移动、旋转)?

jquery - 修复旋转父项内可拖动 div 的鼠标方向

ios - iOS 13 beta 外部屏幕上的 OverscanCompensation

ios - swift 3 : How to mute/unmute microphone during video recording using AVFoundation

c# - 无法在 Unity3D 中创建相对四元数

ios - 在一个函数中以编程方式在彼此之上呈现两个 UIViewController

ios - 使用滑动关闭 UITextField 键盘