关于C#:2d游戏物理?

关于C#:2d游戏物理?

2d game physics?

任何人都可以将我指向2D游戏物理学的库,以便为2D平台/侧滚动游戏编程重力,跳跃动作等吗?
还是可以建议一些用于侧面滚动器的算法,例如mario,sonic等?


听起来好像花栗鼠可能满足您的需求。


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


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

如果想发烧友,可以尝试考虑物体的冲击力,使坠落的物体伤害人或使人行道破裂或其他原因。为此,请使用动能公式:KE = 1/2 * M * V ^ 2,其中M为质量,V为速度。


您正在寻找什么平台?您使用的库取决于此。

对于XNA框架,Farseer非常好。


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


您也可以使用opende进行2D物理


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

http://blog.nihilogic.dk/


我已经在个人项目中使用Box2D。它是2D物理模拟API。但是,如果您想要的是更多游戏/图形API,这可能会适得其反。


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


大多数2D侧滚动平台游戏中的物理是如此简单,您可以自己轻松实现。您要寻找什么样的效果?


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


推荐阅读