【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
转载:9RIA游戏开发者社区(天地会)
作者:ladeng6666(拉登大叔)
作者博客:http://www.ladeng6666.com/blog/
【Box2D系列教程-导航帖】—拉登大叔出品(总贴)
LDEasyBox2D 4.0更新内容如下:
/**
* CHANGE LOG
*
* >>4.0<<
* 添加getBodyAtMouse方法
* 添加startDragBody方法
* 添加stopDragBody方法
* >>3.0<<
* 添加createPolygon方法
* 添加updateWorld方法
* >>2.0<<
* 添加createWrapWall方法
* >>1.0<<
* Box2D 2.0.1实现LDEasyBox2D
*/
[Actionscript3] 纯文本查看 复制代码 public static function getBodyAtMouse(world:b2World):b2Body {
//转换鼠标坐标单位,除以30从m该为px
var mouseVector:b2Vec2 = new b2Vec2(stage.mouseX / 30, stage.mouseY / 30);
//鼠标下的刚体
var bodyAtMouse:b2Body = null;
//queryPoint函数中要用到的回调函数,注意,它必须有一个b2Fixture参数
function callBack(fixture:b2Fixture):void {
if ( fixture == null) return;
//如果fixture不为null,设置为鼠标下的刚体
bodyAtMouse = fixture.GetBody();
}
//利用QueryPoint方法查找鼠标滑过的刚体
world.QueryPoint(callBack, mouseVector);
//返回找到的刚体
return bodyAtMouse;
}
/**
* 用鼠标关节拖动刚体
* @param world 世界
* @param body 要拖动的刚体
* @param maxForce 鼠标关节允许的最大作用力,默认为1000
*/
public static function startDragBody(world:b2World,body:b2Body,maxForce:Number=1000):void {
if (body == null) return;//如果鼠标下的刚体不为空
//创建鼠标关节需求
var mouseJointDef:b2MouseJointDef = new b2MouseJointDef();
mouseJointDef.bodyA = world.GetGroundBody();//设置鼠标关节的一个节点为空刚体,GetGroundBody()可以理解为空刚体
mouseJointDef.bodyB = body//设置鼠标关节的另一个刚体为鼠标点击的刚体
mouseJointDef.target.Set(stage.mouseX / 30, stage.mouseY / 30);//更新鼠标关节拖动的点
mouseJointDef.maxForce = maxForce;//设置鼠标可以施加的最大的力
//创建鼠标关节
mouseJoint=world.CreateJoint(mouseJointDef) as b2MouseJoint;
}
/**
* 停止拖动world中的刚体
* @param world
*/
public static function stopDragBody(world:b2World):void {
if (mouseJoint != null) {
world.DestroyJoint(mouseJoint);
}
}
}
|