Cla*_*ark 0 game-physics physics-engine
我会保持简短,要知道我所说的事情发生在 2009 年的 Box2d for AS3 上,今天也发生在 JavaScript 中的完全独立的 p2 物理库中。
请转到以下 2d 布娃娃演示页面,并用力旋转布娃娃的头部。
https://schteppe.github.io/p2.js/demos/ragdoll.html
您将看到关节分离并变得有弹性的结果。
这个问题阻止了我用物理做任何有趣的事情。球链、弹射器、叉车、布娃娃、蜘蛛侠射击网、二维车辆......
限制似乎不稳定,甚至是多余的。我认为物理引擎适用于愤怒的小鸟或掉落的方块,但是当您添加约束时,该项目就会变成适合破坏的演示。
你能解释一下为什么会发生这种情况吗?我很天真吗?是否存在物理引擎来提供基本的主体和约束?作为开发人员,我应该应用数学来使约束正常工作?
物理引擎接头(约束)可以被认为是施加力的弹簧。弹簧并不是坚如磐石的——如果你用力推它它就会弯曲。
关节的“柔软度”通常与物理引擎的性能成正比。如果您使用微小的时间步长和许多约束迭代,您可能会得到非常僵硬的关节,但性能较差。如果强制物理引擎使关节变得僵硬,但使用较大的时间步长,则模拟将变得不稳定并可能会爆炸。
关节总会有一些“柔软”。你不能指望关节在任何时候、任何情况下都看起来坚如磐石。作为基于物理的游戏的开发者,您必须限制玩家不破坏您的物理。这可以通过多种方式来完成,例如通过设置玩家施加的最大力的限制,或者通过删除一些玩家交互。
在游戏“ Bad Piggies ”中,Rovio 大量使用约束 - 但它们也对用户交互的方式施加了限制。
物理引擎适用于愤怒的小鸟或掉落的方块,但是当您添加约束时,该项目就会变成适合破坏的演示。
不完全正确。碰撞的“下落块”会产生接触——这也是约束(在物理引擎内部)。如果用力推动触点,或者施加太大的重力,触点也会看起来有弹性。这就是为什么像《愤怒的小鸟》这样的游戏使用弱重力场。
制作一个基于物理的游戏,让用户体验自由而不限制用户交互的方式是很困难的 - 但并非不可能。