11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2090|回复: 0
上一主题 下一主题

[2D 物理引擎] 【9RIA—ladeng6666】—【Box2D系列教程 追加篇】LDEasyBox2D 4.0

[复制链接] TA的其它主题
发表于 2018-2-6 14:46:33 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入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);
                        }
                }
        }


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的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)



快速回复 返回顶部 返回列表