如何在spriteKit中以特定角度施加力?

时间:2015-07-08 13:49:33

标签: ios objective-c vector sprite-kit

我想以特定的角度给我的SKSpriteNode。 那么,如何处理我的CGVector给予特定角度的力?

我曾经搜索过它,但遗憾的是没有得到任何好办法。

我想要实现的目标:

我的SKSpriteNode移向屏幕。顶部有按钮,如30,45,60。 因此,如果用户按下按钮(即按钮包含" 30"),那么我必须以相同的速度将SKSpriteNode移动到30度。

如果你们中的任何人可以帮我解决这个问题,请帮助我。

1 个答案:

答案 0 :(得分:2)

首先,您需要将角度转换为弧度,方法是将其乘以pi / 180

CGFloat angleInRadians = angleInDegrees * M_PI / 180;

然后,您可以通过

确定该方向的矢量分量
CGFloat dx = cosf(angleInRadians);
CGFloat dy = sinf(angleInRadians);

最后用

对sprite施加一个力
[sprite.physicsBody applyForce:CGVectorMake(dx*scale, dy*scale)];

其中scale确定施加的力量。

或者,您可以通过

将精灵旋转到与其动作相同的方向
sprite.zRotation = angleInRadians + offset;

其中offset是精灵的图像与零度之间的角度差异(弧度)。例如,如果您的精灵在zRotation为零时面朝上,则offset应为-M_PI_2