任何人都可以指向一个用于 2D 游戏物理库等的库,用于为 2D 平台/横向滚动游戏编程重力、跳跃动作等吗?或者你能推荐一些像马里奥、索尼克等横向卷轴的算法吗?
11 回答
听起来花栗鼠可能会满足您的需求。
您最好的选择很可能是Box2D。它执行 2D 物理,有大量选项,并且很容易集成到现有项目中。它默认对固定体进行 CCD,但任何刚体都可以有选择地包含在 CCD 计算中。
如果您只需要重力,您可以在 5 分钟内自行编程。自由落体的物体以每秒 9.8 米的速度向下加速——也就是说,自由落体时物体的向下速度增加了 9.8 米每秒。对于游戏,您需要将 9.8 除以帧速率。对于跳跃,只需选择一个显着的负垂直速度,在角色跳跃的那一刻将其应用于角色,然后按每帧重力增量递减。除非您正在为您的 2d 侧滚轴寻找 3d 背景,否则这确实是您对马里奥之类的东西所需要的全部。
如果你想更漂亮,你可以尝试考虑一个物体的冲击力,使坠落的物体伤人或开裂路面之类的。为此,请使用动能公式:KE = 1/2 * M * V^2,其中 M 是质量,V 是速度。
你在找什么平台?您使用什么库将取决于此。
对于 XNA 框架,Farseer 相当不错。
要回答问题的第二部分,如果您想了解简单的 2D 平台游戏的工作原理,请阅读N 的教程。是的,N 是一款基于 Flash 的游戏,但这并不意味着它不像“真实”游戏那样构建,因此碰撞检测(和响应)教程非常适用。它们很容易阅读,页面中嵌入了一些直观的演示,以展示几何概念。
你可以看看 Havok 引擎。我相信他们发布了用于非商业用途的免费版本。它有一个约束套件,可让您将物理约束到 2 个平面,在您的情况下,x 和 y。
大多数 2D 横向滚动平台游戏中的物理原理非常简单,您可以自己轻松实现它们。你在寻找什么样的效果?
如果你有时间,你可以使用 PhysX,但对于 2D 来说,它可能会过度杀戮。除此之外,如果您打算让您的游戏在 PC 上运行并想要一些很酷的物理效果,请尝试在谷歌上搜索“verlet 集成”,我知道周围有很多 verlet 实现(非常适合粒子和 2D 布娃娃)。
我在个人项目中使用过Box2D 。它是一个 2D 物理模拟 API。但是,如果您想要的更多是游戏/图形 API,则可能有点矫枉过正。
这家伙在 Javascript 游戏方面做了很多工作:
你也可以用opende做2d 物理