给圆角刚体穿上上衣

创建圆角刚体里,我们学会了如何用组合法创建一个自定义圆角刚体,同时我还给自己留了个作业——给圆角刚体穿上上衣。

其实,这并不是一个新的话题,在刚体的上衣——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的用法,今后的学习中,我们还经常会用到这个知识。

联系作者

公众号:拉小登 | 微博:拉登Dony | B站:拉小登Excel

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注