给圆角刚体穿上上衣
在创建圆角刚体里,我们学会了如何用组合法创建一个自定义圆角刚体,同时我还给自己留了个作业——给圆角刚体穿上上衣。
其实,这并不是一个新的话题,在刚体的上衣——b2BodyDef.userData里我们就学习了自定义”上衣”的方法,很简单,将一个DisplayObject或子类对象赋值给b2bodyDef需求.
//1.创建刚体需求b2BodyDef var bodyRequest:b2BodyDef = new b2BodyDef(); bodyRequest.position.Set(posX / 30, posY / 30);//记得米和像素的转换关系 //通过bodyRequest需求是userData属性设置"上衣" bodyRequest.userData = createRoundFace(width, height, radius);
然后在loop函数里已经刚体的坐标、角度实时更新”上衣”的坐标、角度。
private function loop(e:Event):void { world.Step(1 / 30, 10); //遍历所有的刚体,如果刚体的m_userData属性不为空 for ( var bodyIndex:b2Body=world.GetBodyList(); bodyIndex; bodyIndex = bodyIndex.GetNext()) { if (bodyIndex.m_userData != null) { //更新对应"上衣"的坐标、角度 bodyIndex.m_userData.x = bodyIndex.GetPosition().x * 30; bodyIndex.m_userData.y = bodyIndex.GetPosition().y * 30; bodyIndex.m_userData.rotation = bodyIndex.GetAngle() * 180 / Math.PI; } } }
效果如下:
如果你对刚体的创建不是很熟悉,请参考掉落的苹果——b2Body刚体。
真正的游戏中,不是使用Box2D的Debug图,所以大家一定要牢牢掌握好m_userData的用法,今后的学习中,我们还经常会用到这个知识。
联系作者