2D球运动的物理引擎(开发2D球类游戏的利器)

duyuyu 2006-01-13 07:57:50
优势:
1.支持的球的数目理论上最大是2G(不考虑性能)
2.采用路径分析的碰撞检测算法,可以检测到一个时间间隔之内发生的碰撞,彻底避免了穿越现象(连很多专业的物理引擎都不能避免穿越)
3.循环检测重叠,只要球的初始位置不重叠,就可以保证球在任何时刻都不会发生重叠。

大家有想做2D球类游戏的用它就非常方便,有不明白使用方法的可以和我联系。
物理引擎库和源代码在这里下载:
http://bbs.gameres.com/showthread.asp?threadid=45494
...全文
436 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duyuyu 2006-01-18
  • 打赏
  • 举报
回复
楼上的是物理专业吧,流体的模拟太过专业,流体力学没学过啊,对于流体我就不奢望了。
我想问,弹性物体的互相作用如何模拟?
我想到两种方法:
1.简化成2阶线性微分方程,求解计算轨迹
2.每一帧根据物体形变计算受力,然后计算加速度,然后更新速度和位移
第一种精确,但是当物体较多的时候,求解比较复杂,而且如果是高阶的或者非线性的运动就没办法了。
第二种完全是微积分的近似模拟,适用于任何情况,但是误差比较大,导致机械能并不能精确守恒,误差累计会严重偏离实际。
可能我太业余,楼上能否从专业角度指导指导?
IO_X 2006-01-18
  • 打赏
  • 举报
回复
用第一种方法隐式求解开销太大,对于游戏来说,还不如缩小时间步长进行显式计算,然后根据穿透程度大小计算反作用力。

很多游戏物理引擎,都是固定小时间步长进行显式模拟的,物理模拟可以考虑独立一个线程,提高性能(在渲染期间CPU不至于空闲)。
IO_X 2006-01-18
  • 打赏
  • 举报
回复
我数学专业,物理学得很少,力学如果要精确一点可以参考有限元分析的相应算法。
duyuyu 2006-01-17
  • 打赏
  • 举报
回复
to kenshu111(磨剑侠):
我认为用2D的方法实现一个球的滚动效果是很困难的,你要自己实现3D透视图的算法,这是比较艰深的,全靠高等解析几何来计算。
你大概想做台球,你可以用3dsmax把每个球做出来,然后用direct3D把在程序里把它们显示出来,不过对转动的处理还是有点麻烦的,要增加角度的值来记录球的角度,还要增加角速度来参与计算,虽然球的平动是2D的,但这些角度的量最好都是3D的才会有好的视觉效果。
我有时间会在我的这个物理引擎中加入对转动的支持。
IO_X 2006-01-17
  • 打赏
  • 举报
回复
专业引擎不检测穿透,而是提供了一些开销较低的方法来避免穿透,否则代价就是性能大大降低。推荐PhysX(http://www.ageia.com/developers/downloads.html)。

我只写过流体模拟的,用半拉格朗日方法求解三维Navier-Stokes方程,GPU加速,模拟气体还可以,但对于水,还在考虑实时生成边界网格的问题。
WilliamJ 2006-01-17
  • 打赏
  • 举报
回复
我写了一个3D物理引擎,在csdn的blog中有相应地演示,还在开发中。
shunzi911 2006-01-16
  • 打赏
  • 举报
回复
可以学习下下!thanks!
kenshu111 2006-01-16
  • 打赏
  • 举报
回复
我的QQ是386931243:EMAIL:ZGSS278@163.COM
kenshu111 2006-01-16
  • 打赏
  • 举报
回复
很想认识你,想请教你是否可以在二维中实现一个球的滚动效果:球上的编号象三维一样是在滚的。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧