gpt4 book ai didi

ios - SceneKit – option impulse 如何对 applyForce 方法起作用?

转载 作者:行者123 更新时间:2023-11-28 21:53:04 24 4
gpt4 key购买 nike

当对动态物体施加力时,即使脉冲设置为 false,该力似乎也不会持续。

我有一个带有 physicsBody 的 sphereNode:dynamic,mass=1 和 damping=0。世界重力设置为 (0,0,0)。

如果我在手势识别器中施加力:

func Detected(sender: UILongPressGestureRecognizer) {

if sender.state == UIGestureRecognizerState.Began {
sphereNode.physicsBody!.applyForce(SCNVector3Make(1, 0, 0), impulse: false)
}

if sender.state == UIGestureRecognizerState.Ended {
sphereNode.physicsBody!.clearAllForces()
}
}

然后速度变为 0.0166,就好像只在一帧期间施加了力并保持恒定,除非我再次触发手势。

让它作为真正的恒定力工作的唯一方法是在渲染器循环中调用 applyforce,但与非脉冲 applyforce 的唯一区别是 60 倍。我不认为这是预期的行为.

最佳答案

我认为它应该是这样工作的。

当您想瞬间改变 body 的动量时,您可以使用冲量。例如,您可能会使用冲动从大炮中发射一个球。就像大炮一样,它是“发射后不管”;你调用这个方法,球就会飞出去,直到它撞到什么东西。

您想产生持续效果时,您可以使用力 (impulse:NO)。也就是说,它不会产生连续效果(否则必须有 API 来枚举和取消每个物体上的单个连续力),但它为您提供了一个工具,可以在您想要在每一帧上执行某些操作时使用创造持续的效果。

例如,如果您希望您的宇宙飞船在您按下按钮时加速,并且在您松开按钮之前一直保持加速,您将使用一个力。按住按钮时,每次运行 update 方法时只需调用 applyForce

impulse 切换为这两种情况做了两件事:

  • 如您所见,它会更改量级单位以适合每种情况。
  • 当使用impulse:NO 时,它会延迟评估直到当前帧周期结束。因此,您可以在一个更新期间应用多个不同的力,当 SceneKit 为下一帧模拟物理时,它将应用力的总和(除非您先调用 clearAllForces ).

关于ios - SceneKit – option impulse 如何对 applyForce 方法起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com