旋转 Sprite 时保持矢量方向不变

Keeping Direction of a Vector Constant while Rotating Sprite

我正在尝试制作一个精灵在被物体击中时总是向右移动的游戏。但是,由于 Sprite 不断旋转并且零弧度随 Sprite 旋转,因此如果 Sprite 面向左侧并击中对象,我计算出的大小会朝相反的方向移动。有没有办法让幅度的方向始终指向右边,即使零面向左边?

        // referencePoint = upper right corner of the frame 
        let rightTriangleFinalPoint:CGPoint = CGPoint(x: referencePoint.x, y: theSprite.position.y)

        let theSpriteToReferenceDistance = distanceBetweenCGPoints(theSprite.position, b: referencePoint)
        let theSpriteToFinalPointDistance = distanceBetweenCGPoints(theSprite.position, b: rightTriangleFinalPoint)
        let arcCosineValue = theSpriteToFinalPointDistance / theSpriteToReferenceDistance
        let angle = Double(acos(arcCosineValue))

        let xMagnitude = magnitude * cos(angle)
        let yMagnitude = (magnitude * sin(angle)) / 1.5

不确定这是否适合您: 我会使用方向约束来旋转精灵。在这种情况下,移动可以独立于方向进行。

前段时间做了个教程:http://stefansdevplayground.blogspot.de/2014/09/howto-implement-targeting-or-follow.html

所以我弄明白了是怎么回事。

角度似乎并没有像我最初想象的那样随着 Sprite 旋转,我正在制作的矢量正在使用上面的代码。我遇到的问题是我还为错误的对象设置了碰撞位。如果我只针对精灵设置对象的接触位,我想要的结果就会实现。