自从上一个RigidParticle的demo发布以来,我重新整理了它的架构,并完善了它的算法。现在终于有新东西可以看了。
主要的改进是在这些方面:
- 把检测碰撞点的代码放到了CollisionDetector中,我觉得这样更加合理一点
- 关于刚体碰撞的运算,放到了一个新的类RigidCollisionResolver中。碰撞的算法以前只是看起来像得近似算法,现在才能算是真正的“模拟”。
- RigidParticle被删除了,取而代之的有3个新的类:RigidItem、RigidRectangle和RigidCircle。RigidItem是新架构中所有刚体的母类,它管理所有刚体共有的一些操作和运算。RigidRectangle和原来的RigidParticle功能相同,模拟一个矩形的刚体。RigidCircle则是新增的圆形刚体,它可以模拟圆形粒子所无法做到的滚动效果,一个滚动着的球能够借助它的势能爬上山坡,这一点使用圆形的粒子是无法做到的
不过新的架构也有缺点,目前它还无法和普通粒子发生互动,而摩擦力的计算上还没有完全解决。
操作和以前一样,按上箭头产生更多物体落下来。
源文件下载
你也可以在这里找到源代码 http://ape.googlecode.com/svn/branches/rigidape/
那边会一直保持最新。