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