LDEasyBox2D 4.0
LDEasyBox2D 4.0更新内容如下:
/**
* CHANGE LOG
*
* >>4.0<<
* 添加getBodyAtMouse方法
* 添加startDragBody方法
* 添加stopDragBody方法
* >>3.0<<
* 添加createPolygon方法
* 添加updateWorld方法
* >>2.0<<
* 添加createWrapWall方法
* >>1.0<<
* Box2D 2.0.1实现LDEasyBox2D
*/
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); } } }
联系作者
google code里 上个svn吧
恩,稍后去弄一个!
这玩意不错~我还可以根据自己的需要来添加一些东西~O(∩_∩)O~
是的撒,目的就是简化Box2D的创建过程!
好玩!
!可惜..弄不会..我做的是c++的(cocos2dx)..AS的代码弄不好(添加自定义属性m_customGravity)
sorry,开始写这个教程的时候,也是在模仿国外的一些教程,实际上不添加自定义属性,也可以实现消除重力的。最近我在编写box2D开发的书,虽然还是基于AS,但是内容上已经去掉了局限于AS的内容。
不知道我用AS写的教程,你是否能看懂?
可以在书的后面几章把As和其他版本的区别写一下啊。
我还是以讲解API为主,只适用于AS的API我不会专门去讲,而是捎带着提一下