是否可以加速SKSpriteNode? p>
我知道可以使用node.physicsBody.velocity
轻松设置速度,但设置加速度有多难?
答案 0 :(得分:3)
从牛顿第二定律向后工作一个动议:F = m.a
您可以使用applyForce
来获得所需的加速度,其中力是加速度乘以质量。
[node.physicsBody applyForce:CGVectorMake(node.mass*acceleration.dx,
node.mass*acceleration.dy)];
答案 1 :(得分:0)
如果你想让它加速,那么你应该改变物体的重力方向
self.physicsWorld.gravity = CGVectorMake(dx,dy)
但这会使一切都加速,如果可以的话
答案 2 :(得分:0)
applyImpulse 立即赋予一定量的能量(以牛顿秒为单位)。你的物体不会加速到瞬间达到所需的速度。这不太可能看起来非常自然,因为它意味着近乎无限的能量(能量除以时间)因此仅适用于爆炸(例如射击子弹)。
applyForce 对模拟运行的时间间隔应用力(以牛顿为单位)(即:1/60秒)。这允许您正确地加速物体并模拟在不同方向上同时施加的许多不同力(重力,风,火箭增强等)。
另外值得注意的是 applyForce:atPoint:这允许您指定施加力的对象的哪个点。例如,如果您使用字符串模拟气球,则该字符串会将其重量应用于气球的底部,而气球中的基座的提升将应用于气球的中心。在重心以外的位置施加力将导致物体旋转。
最后,您有相应的 applyAngularImpulse:和 applyTorque:,它们可以影响对象的旋转速度。这很有用,例如,如果你想保持一个物体直立,尽管有各种反弹:你可以施加与角度成比例的扭矩(或者如果你想避免振荡则将其平方)。
所有这些都在这里有很好的记录:SKPhysicsBody
但如果你需要更多关于物理学的信息,那么看看维基百科: Newtonian Physics和相关页面(例如角动量)。