自从发现Box2D以来,我就将其用于我尝试编写的任何类似于游戏的应用程序,从很小的原型或测试程序的小程序到实际项目。
多亏了它,从碰撞到实际的物理处理都非常容易。
不过,有时候我对此有一些疑问:如果我只需要处理圆或AABB,并且不需要先进的物理工具(诸如此类的接头或类似的东西),我认为物理引擎可能会增加某种规模,不必要的开销。
再次提出我的问题:您会在物理非常简单的游戏(例如,超级马里奥)中使用Box2D(或其他物理引擎)吗?而且,如果没有,为什么?
自从发现Box2D以来,我就将其用于我尝试编写的任何类似于游戏的应用程序,从很小的原型或测试程序的小程序到实际项目。
多亏了它,从碰撞到实际的物理处理都非常容易。
不过,有时候我对此有一些疑问:如果我只需要处理圆或AABB,并且不需要先进的物理工具(诸如此类的接头或类似的东西),我认为物理引擎可能会增加某种规模,不必要的开销。
再次提出我的问题:您会在物理非常简单的游戏(例如,超级马里奥)中使用Box2D(或其他物理引擎)吗?而且,如果没有,为什么?
Answers:
如果Box2D占用的内存,磁盘空间,开发工作量或处理器时间过多,那么请不要使用它。否则,如果您觉得有用,则没有理由避免使用它。
就像超级马里奥(Super Mario)一样简单,因为它实际上没有太多物理特性。(马里奥的跳跃不会影响其他物体的物理)
如果您在多个方面(一个以上)使用物理学来影响其他对象的结果,那么我将使用引擎。
我的答案是肯定的,绝对要使用像Box2D这样的物理引擎来做简单的事情,因为您不应该花费不必要的开发时间来实现从物理引擎中快速获得的某些功能。例如,定义一个静态物体并在其上放置一个动态物体,然后向动态物体施加力以进行方向输入,几分钟后便有了平台游戏。我认为引擎不会增加足够的开销以至于不值得这样做。
如果游戏中的“物理”很简单,则无需导入物理引擎。
由于在对物理建模和模拟物理物理学之间存在差异,因此我宽松地使用了“物理”一词。区别非常重要。
例如,在马里奥兄弟(Mario Bros.)中,当您跑步和停车时,您会滑动一点。考虑一下如何实现。
您可以通过定义所有必要的变量对其进行建模:质量,重力,摩擦系数,推力等,然后计算新的速度,加速度等。
但是这值得吗?您可以通过降低玩家不动时的速度来模拟相同的效果...
就像是:
if( pressing movement key ) {
speed = 5;
} else {
if(speed) speed--; // slide!
}
区别在于,一个是物理学,另一个不是。两者都有优点和缺点。但是作为简单游戏的一般规则,更容易伪造它。
您必须根据情况决定
使用您的自定义引擎的专家
现成的物理引擎的优点: