首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速SKSpriteNode

加速SKSpriteNode
EN

Stack Overflow用户
提问于 2014-02-03 16:39:15
回答 3查看 1.9K关注 0票数 2

是否有可能加速SKSpriteNode?

我知道用node.physicsBody.velocity可以很容易地设置速度,但是设置它的加速度有多难呢?

EN

回答 3

Stack Overflow用户

发布于 2014-02-03 17:37:35

从牛顿第二定律开始向后计算,运动:F= m.a,你可以通过使用applyForce来获得所需的加速度,其中力是加速度乘以质量。

代码语言:javascript
复制
[node.physicsBody applyForce:CGVectorMake(node.mass*acceleration.dx,
                                          node.mass*acceleration.dy)];
票数 6
EN

Stack Overflow用户

发布于 2014-03-18 01:47:43

applyImpulse会立即提供一定数量的能量(单位为Newton.seconds)。您的对象不会加速,而是会立即达到所需的速度。这看起来不太可能很自然,因为它意味着近乎无限的能量(能量除以时间),因此只适用于爆炸(例如射击子弹)。

applyForce在模拟运行的时间间隔内(即:1/60秒)应用力(以牛顿为单位)。这使您可以正确地加速物体,并模拟同时施加的许多不同的力(重力、风、火箭助推力等)。在不同的方向。

同样值得注意的是applyForce:atPoint:,它允许你指定在物体的哪个点上施加力。例如,如果使用线模拟气球,则线会将其重量应用于气球的底部,而气球底部的升力将应用于气球的中心。在重心以外的其他地方施加力将导致物体旋转。

最后,您有相应的applyAngularImpulse:applyTorque:,它们允许您影响对象的旋转速度。这是很有用的,例如,如果你想保持一个物体直立,尽管有各种反弹:你可以应用一个与角度成比例的扭矩(如果你想避免振荡,也可以是它的平方)。

所有这些都在这里得到了很好的记录:SKPhysicsBody

但是,如果你需要更多关于物理学本身的信息,那么可以看看维基百科:Newtonian Physics和相关页面(例如角动量)。

票数 1
EN

Stack Overflow用户

发布于 2014-02-05 06:39:51

如果你想让它加速,那么你应该改变物体的重力方向。

代码语言:javascript
复制
self.physicsWorld.gravity = CGVectorMake(dx,dy)

但是,如果可以的话,这将使一切加速。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21522816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档