旋转精灵时保持矢量常数的方向

时间:2015-11-15 15:48:09

标签: ios vector sprite-kit game-physics skphysicsbody

我正在尝试制作一个游戏,其中精灵在被物体击中时将始终向右移动。然而,由于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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

所以我弄清楚发生了什么。

似乎角度不像我原先想的那样用Sprite旋转,我正在制作的矢量正在使用上面的代码。我遇到的问题是我还为错误的对象设置了碰撞位。如果我只针对精灵设置对象的接触位,那么我想要的结果就会成真。