Box2D如何固定动态刚体

作者: ladeng6666 分类: Box2D 发布时间: 2012-09-01 11:13 阅读: 13,879

从开始学习Box2D到现在,我们认识了很多的刚体。如圆形刚体圆角刚体矩形刚体多边形刚体等等。但是这些刚体不外乎两种:静态刚体动态刚体。静态刚体不进行物理模拟,在创建位置静止不动。动态刚体受重力作用,模拟物理运动自然下落。

但是有时候我们并不希望刚体一个劲的往下掉,要不就是跟石头似的,一动不动。比如像wake up the box4游戏里的这个传送带效果(下面的游戏截图是第26关,所以要像看到效果,你得费点力气,玩吧!)。

幸运的是,上面的效果可以通过我们学到的“马达关节”b2Revolute来实现(如果你还不知道什么是马达关节,赶紧去学习一下吧)。

我们知道马达关节连接了两个刚体,实际上,只要固定其中一个刚体,另一个刚体也就固定了(前提是另一个刚体的中心在anchor节点位置)。我把”马达关节”里的风扇的底座bodyB设置设置为静态刚体后,效果如下,试着拖动刚体看看效果。

主要的代码如下:

但是wake up the box4游戏里没有我们所谓的底座啊,怎么办?对,用”空刚体”!

b2World有一个GetGroundBody()方法,可以返回一个没有质量、没有形状、不进行碰撞检测的刚体,它是一个只有坐标的刚体,所以我叫他”空刚体”。这样就可以把底座去掉了。

像游戏里一样,我创建了三个圆形刚体,并给左下角的刚体添加了torque扭力。点击鼠标可以创建一个小的圆形刚体,按住control键,点击鼠标可以创建一个矩形刚体,点击”reset”清除创建的刚体。

完整的代码和注释如下:

代码中用到了我写的静态类LDEasyBox2D,可以有效的简化代码,具体请参考这里

源代码下载

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

8条评论
  • zzzz

    2012 年 9 月 1 日 下午 5:08

    酷~又出新教程了!
    拉登兄辛苦了,希望能在你的BOX2D系列教程中把这个物理引擎彻底学会,再次感谢,支持!!!

    1. ladeng6666

      2012 年 9 月 1 日 下午 5:11

      加油,我们一起进步!!

  • sZpt_CBD

    2012 年 9 月 4 日 下午 6:15

    在拉登兄这学到好多···非常感谢·!支持了!

    1. ladeng6666

      2012 年 9 月 4 日 下午 9:17

      谢谢你的支持!

    2. herpes natural treatment

      2013 年 5 月 5 日 上午 5:41

      Having read this I thought it was very informative.
      I appreciate you finding the time and energy to put this information together.
      I once again find myself personally spending way too much time both reading and commenting.
      But so what, it was still worthwhile!

  • dbsource

    2012 年 9 月 5 日 上午 10:34

    拉登兄,还有没有后续教程。

    1. ladeng6666

      2012 年 9 月 5 日 下午 7:01

      有的呢,最近这两天有点忙,没及时更新教程,sorry啦,马上就会有更新啦!

      1. dbsource

        2012 年 9 月 6 日 下午 2:51

        拉登兄,游戏《别碰红线》中老鼠尾巴是怎么是实现的,用旋转关节实现发现关节会变长。能不能具体讲讲是怎么实现。
        别碰红线:http://www.17yy.com/f/play/78239.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注