2D游戏物理学?

12

有没有人可以指引我使用哪个库来编写2D游戏物理引擎,例如编写2D平台/侧滑游戏中的重力、跳跃动作等?或者你能否提供一些像马里奥、索尼克等侧滑游戏的算法呢?

11个回答

22

听起来Chipmunk可能符合您的需求。


12

你最好的选择很可能是Box2D。它可以进行2D物理模拟,有大量选项,并且非常容易集成到现有项目中。默认情况下,它会为固定物体执行连续碰撞检测(CCD),但任何刚体都可以被选择性地包含在CCD计算中。


9
如果你只需要重力,你可以在5分钟内自己编程实现。自由落体物体的速度每秒下降9.8米 - 也就是说,物体的向下速度每秒下降9.8米。对于游戏,您需要将9.8除以帧率。对于跳跃,只需选择一个显著的负垂直速度,在角色跳跃时应用该速度,并将其减去每帧的重力增量。这对于像马里奥这样的游戏已经足够了,除非您正在为2D侧面滚动器提供3D背景。
如果您想更加高级,可以尝试考虑物体的冲击力,使掉落的物体伤害人或破坏路面等。为此,使用动能公式:KE = 1/2 * M * V ^ 2,其中M是质量,V是速度。

5
您需要什么平台?您使用的库将取决于此。
对于XNA框架,Farseer非常不错。

我正在寻找 Allegro+GCC 组合。 - Abhishek Mishra

4
为了回答您问题的第二部分,如果您想掌握简单2D平台游戏的工作原理,请阅读N的教程。是的,N是一个基于Flash的游戏,但这并不意味着它不像一个“真正”的游戏一样构建,因此碰撞检测(和响应)教程是非常适用的。它们是直接明了的阅读材料,页面中嵌入了一些直观的演示来展现几何概念。

你说得对,像Box2D、Chipmunk这样的库非常棒,但是实现和使用起来需要很多时间。由于我被限制在28号之前完成开发,我需要减少一些游戏复杂性,比如不规则地形的可能性,并采用一些更简单、普遍适用的方法。 - Abhishek Mishra
最后我做了一个名为“Nincompoop”的游戏,原计划在9月30日之前完成,但并未进行完善。在这里尝试一下:http://www.bidworkz.com/hfn/nincompoop_shaastra.zip - Abhishek Mishra

2
你可以考虑使用Havok引擎。我相信他们发布了一个非商业使用的免费版本。它有一个约束套件,可以让你将物理约束在两个平面上,也就是你的情况下的x和y轴。

2
大多数2D横向平台游戏中的物理效果都非常简单,你很容易自己实现它们。你想要什么样的效果?

基本上是很多动态跳跃和弹跳。 - Abhishek Mishra

2

如果你有时间,你可以使用PhysX,但对于2D来说可能是杀鸡焉用牛刀。 此外,如果您计划让游戏在PC上运行并想要一些很棒的物理效果,请尝试搜索“Verlet Integration”,我知道有相当多的Verlet实现(适合粒子和2D布偶)。


2

我在个人项目中使用过Box2D。它是一个2D物理仿真API。但是,如果你想要的更多是游戏/图形API,那么可能会过于复杂。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接