刚体的上衣——b2BodyDef.userData

来源:互联网 发布:centos怎么安装samba 编辑:程序博客网 时间:2024/04/25 15:16
在前面的教程中,我们学会了如何创建矩形刚体、圆形刚体和静止不动的刚体。但是学了那么久,看到的总是些小框框,没有任何的图形,我相信,这个肯定满足不了你。


那么今天我们就来学习一下如何给刚体穿上"皇帝的上衣"。




在创建"刚体需求"时(如果你对"刚体需求"不是了解,请参考"掉落的苹果——b2Body"),可以通过userData属性给刚体准备一套'衣服",这套"衣服"通常是AS3中的DisplayObject对象,但可以是任何对象类型。
            //1.创建刚体需求b2BodyDef
            var bodyRequest:b2BodyDef = new b2BodyDef();
            bodyRequest.position.Set(posX / 30, posY / 30);//记得米和像素的转换关系
            //Ladeng6666是Flash元件库中的一个图片
            bodyRequest.userData = new Ladeng6666();
            //设定上衣的尺寸
            bodyRequest.userData.width = 60;
            bodyRequest.userData.height = 60;
            //将上衣添加到舞台上
            addChild(bodyRequest.userData);
但是在"认识Box2D世界"时,我们知道,Box2D只是一个物理引擎,它与AS3没有直接的联动关系。就是像MVC一样,view需要根据model的数据实时更新显示。同样刚体的"衣服"也要跟着刚体走。这一点实现起来很简单,只要获取b2Body的position和angle,然后再把'衣服"放到相同的位置和角度就可以了。
            for (var body:b2Body = world.m_bodyList; body; body=body.GetNext()) {
                if (body.m_userData != null) {
                    body.m_userData.x = body.GetPosition().x * 30;
                    body.m_userData.y = body.GetPosition().y * 30;
                    body.m_userData.rotation = body.GetAngle() * 180 / Math.PI;
                }
            }
我继续使用了"掉落的苹果——b2Body刚体"里的示例,效果如下:






代码跟"掉落的苹果——b2Body"中没有很大的改动,只要复制上面的代码,覆盖刚体需求部分代码就可以了。