2D游戏物理?

时间:2020-03-06 14:24:16  来源:igfitidea点击:

谁能指向我一个用于2D游戏物理的库,用于为2D平台/侧滚动游戏编程重力,跳跃动作等?
还是可以为侧滚器推荐一些算法,例如mario,sonic等?

解决方案

我们正在寻找什么平台?我们使用什么库将取决于此。

对于XNA框架,Farseer很好。

听起来花栗鼠可能满足需求。

我们可以看一下Havok引擎。我相信他们发布了一个非商业用途的免费版本。有一个约束工具包可让我们将物理学约束为2个平面,在情况下为x和y。

大多数2D侧滚动平台游戏中的物理过程都很简单,我们可以自己轻松实现它们。我们在寻找什么样的效果?

如果有时间的话,我们可以使用PhysX,但对于2D来说它可能会被淘汰。
除此之外,如果我们打算在PC上运行游戏并需要一些不错的物理知识,请尝试使用" verlet集成"进行谷歌搜索,我知道周围有很多verlet实现(对于粒子和2D rag-dolls很好)。

我已经在个人项目中使用Box2D。它是2D物理模拟API。但是,如果我们想要的是更多游戏/图形API,则可能会显得有些过头。

我们最好的选择是Box2D。它执行2D物理学,具有大量选择,并且非常容易集成到现有项目中。默认情况下,它对固定物体使用CCD,但是可以在CCD计算中有选择地包括任何刚体。

如果我们只需要重力,则可以在5分钟内对它进行编程。自由下落的物体以每秒9.8米/秒的速度向下加速,也就是说,物体的下行速度以自由下落的每秒9.8米的速度增加。对于游戏,无论帧速率是多少,我们都希望将其除以9.8. 对于跳跃,只需选择一个显着的负垂直速度,在其跳跃的瞬间将其应用于角色,然后按每帧的重力增量将其减小。实际上,这就是Mario之类所需的全部东西,除非我们正在为2d侧滚动器寻找3d背景。

如果我们想变得更高级,可以尝试考虑物体的冲击力,使掉落的物体伤害人或者破坏路面或者其他东西。为此,请使用动能公式:KE = 1/2 * M * V ^ 2,其中M为质量,V为速度。

这个家伙在Javascript游戏方面做了很多工作:

http://blog.nihilogic.dk/

我们也可以使用opende进行2D物理学

要回答问题的第二部分,如果我们想了解简单的2D平台游戏的工作原理,请通读N教程。是的,N是基于Flash的游戏,但这并不意味着它不是。并非像"真实"游戏那样构建,因此碰撞检测(和响应)教程非常适用。它们是简单易读的内容,并在页面中嵌入了一些直观的演示来展示几何概念。