【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
转载:9RIA游戏开发者社区(天地会)
作者:ladeng6666(拉登大叔)
作者博客:http://www.ladeng6666.com/blog/
【Box2D系列教程-导航帖】—拉登大叔出品(总贴)
上次我们讨论了如何创建一个多边形刚体,终于摆脱了简单的矩形和圆形,又上了一个台阶。
这不,刚学会走,有人就想跑了。天地会的xiaopang125同学前两天问我如何创建一个圆角刚体,我用创建多边形刚体教程里的组合法实现了这个效果:
点击舞台任意位置,创建圆角刚体
[Actionscript3] 纯文本查看 复制代码 private function createRoundBody(posX:Number,posY:Number,width:Number,height:Number,radius:Number):void
{
//1.创建刚体需求b2BodyDef
var bodyRequest:b2BodyDef = new b2BodyDef();
bodyRequest.position.Set(posX / 30, posY / 30);//记得米和像素的转换关系
//2.Box2D世界工厂更具需求创建createBody()生产刚体
body=world.CreateBody(bodyRequest);
//3.创建敢提形状需求b2ShapeDef的子类
/* 详细说明我们的需求
创建多个b2Shape需求
然后b2Body刚体工厂根据需求createShape生产形状
*/
//把像素转换成Box2D里的米
var b2Width:Number = width / 2 / 30;
var b2height:Number = height / 2 / 30;
var b2Radius:Number = radius / 2 / 30;
var offsetX:Number = b2Width - b2Radius;
var offsetY:Number = b2height - b2Radius;
//------------------------------------
// 首先创建两个矩形,我分别把它们高和宽减去了radius,留给圆角用,你可以注释掉下面创建圆角的代码,看看效果
var shapeRequest:b2PolygonDef = new b2PolygonDef();
shapeRequest.density = 3;
shapeRequest.friction = 0.3;
shapeRequest.restitution = 0.2;
//创建两个矩形
shapeRequest.SetAsOrientedBox(b2Width, b2height - b2Radius);
body.CreateShape(shapeRequest);
shapeRequest.SetAsOrientedBox(b2Width - b2Radius, b2height);
body.CreateShape(shapeRequest);
//------------------------------------
// 然后,分别在四个角上创建四个圆形,实现圆角效果
var circleRequest:b2CircleDef = new b2CircleDef();
circleRequest.density = 3;
circleRequest.friction = 0.3;
circleRequest.restitution = 0.3;
circleRequest.radius = b2Radius;
circleRequest.localPosition = new b2Vec2(-offsetX, -offsetY);
body.CreateShape(circleRequest);
circleRequest.localPosition = new b2Vec2(offsetX, -offsetY);
body.CreateShape(circleRequest);
circleRequest.localPosition = new b2Vec2(-offsetX, offsetY);
body.CreateShape(circleRequest);
circleRequest.localPosition = new b2Vec2(offsetX, offsetY);
body.CreateShape(circleRequest);
body.SetMassFromShapes();
}
代码除了下面创建圆角刚体的函数之外,与创建多边形刚体里的基本一致。下面的代码我已经做了详细的注释,就不再赘述了。
圆角效果实现了,接下来给我自己以及大家留个家庭作业,请参考"刚体的上衣——b2BodyDef.userData"一节,给圆形刚体穿上上衣。
下载:
OK 2012-07-03 创建圆角刚体.rar
(254.7 KB, 下载次数: 0)
|