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

Ios 如何在spriteKit中以特定角度施力?,ios,objective-c,vector,sprite-kit,Ios,Objective C,Vector,Sprite Kit,我想在特定角度对我的SKSpriteNode施加力。 那么,如何处理我的CGVector以特定角度施力 我已经找过了,但不幸的是没有找到好的方法 我想要实现的目标: 我的SKSpriteNode向屏幕移动。顶部有30、45、60等按钮。 因此,如果用户按下按钮(即该按钮包含“30”),则我必须以相同的速度将我的SKSpriteNode移动到30度 如果你们中有人能帮我解决这个问题,请帮我解决。首先,你需要将角度乘以π/180,将角度转换为弧度 CGFloat angleInRadians = a

我想在特定角度对我的
SKSpriteNode
施加力。 那么,如何处理我的
CGVector
以特定角度施力

我已经找过了,但不幸的是没有找到好的方法

我想要实现的目标:

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


如果你们中有人能帮我解决这个问题,请帮我解决。

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

CGFloat angleInRadians = angleInDegrees * M_PI / 180;
然后,可以通过以下方法确定该方向上的矢量分量:

CGFloat dx = cosf(angleInRadians);
CGFloat dy = sinf(angleInRadians);
最后对精灵施加一个力

[sprite.physicsBody applyForce:CGVectorMake(dx*scale, dy*scale)];
其中
比例
确定施加的力的大小

(可选)您可以将精灵旋转到与其运动方向相同的面上

sprite.zRotation = angleInRadians + offset;

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

@sangony,感谢您的快速响应。我会看到它,并让你们知道。嗨,0x141E,实际上我的精灵上施加了力。首先,我需要停止我的精灵从以前的力量效果。然后需要强制我的精灵以特定角度移动。你可以使用
sprite.physicsBody.velocity=CGVectorMake(0,0)停止你的精灵0x141E在这里我可以停止精灵。但是无法将我的精灵移动到特定的方向(即使用各自的角度),我建议您将
applyForce
替换为
applyImpulse
,并增加
scale
,直到精灵按您的预期移动为止。@Minimi如果您使用这些弧度角的正反方向,您应该得到(0.7071,0.7071),(-0.7071,0.7071),(-0.7071,--0.7071),和(0.7071,-0.7071),这将分别导致对象向右/向上、向左/向上、向左/向下和向右/向下移动。