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

5 vector objective-c ios sprite-kit

我想SKSpriteNode在特定的角度赋予我力量。那么,如何对待我CGVector在特定角度的给力?

我已经搜索过它,但不幸的是没有得到任何好的方法。

我想要实现的目标:

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

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

0x1*_*41E 4

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

CGFloat angleInRadians = angleInDegrees * M_PI / 180;
Run Code Online (Sandbox Code Playgroud)

然后您可以通过以下方式确定该方向上的矢量分量

CGFloat dx = cosf(angleInRadians);
CGFloat dy = sinf(angleInRadians);
Run Code Online (Sandbox Code Playgroud)

最后对精灵施加一个力

[sprite.physicsBody applyForce:CGVectorMake(dx*scale, dy*scale)];
Run Code Online (Sandbox Code Playgroud)

其中scale决定了施加的力的大小。

或者,您可以旋转精灵使其面向与其运动相同的方向

sprite.zRotation = angleInRadians + offset;
Run Code Online (Sandbox Code Playgroud)

其中offset是精灵图像与零度之间的角度差(以弧度为单位)。例如,如果你的精灵面朝上,当zRotation为零时,offset应该是-M_PI_2