我想以特定的角度给我的SKSpriteNode
。
那么,如何处理我的CGVector
给予特定角度的力?
我曾经搜索过它,但遗憾的是没有得到任何好办法。
我想要实现的目标:
我的SKSpriteNode
移向屏幕。顶部有按钮,如30,45,60。
因此,如果用户按下按钮(即按钮包含" 30"),那么我必须以相同的速度将SKSpriteNode
移动到30度。
如果你们中的任何人可以帮我解决这个问题,请帮助我。
答案 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
。