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);
			}
		}
	}

下载地址:http://vdisk.weibo.com/s/bof7z

联系作者

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

10 Replies to “LDEasyBox2D 4.0”

  1. sorry,开始写这个教程的时候,也是在模仿国外的一些教程,实际上不添加自定义属性,也可以实现消除重力的。最近我在编写box2D开发的书,虽然还是基于AS,但是内容上已经去掉了局限于AS的内容。

发表回复

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