9RIA-ladeng6666 发表于 2018-2-6 14:46:33

【9RIA—ladeng6666】—【Box2D系列教程 追加篇】LDEasyBox2D 4.0

转载: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
*/

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

页: [1]
查看完整版本: 【9RIA—ladeng6666】—【Box2D系列教程 追加篇】LDEasyBox2D 4.0

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)