Box2D物理碰撞基础知识说课材料.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Box2D物理碰撞基础知识;Box2D简介;Box2D注意事项;Box2D Body;Box2D b2ShapeDef; b2CircleDef类中有一个不同的属性,代替SetAsBox是他的Radius( 半径)。 b2PolyDef类具有一个顶点数组(最大是8)来代替SetAsBox和 Radius。这些顶点都是b2Vec2类型的对象。 ? 以下通过实例来讲述Box2D的基本用法,在打开源文件进行测试时, 需要把Box2D的类库放在目录下面,程序才能正常运行。 ;Box2D Hello World;Box2D 鼠标与刚体交互之移除选中刚体;Box2D 鼠标与刚体交互之拖拽刚体;var shapesArray:Array = new Array(); var count:int = world.Query(aabb, shapesArray, maxCount); var body:b2Body; for (var i:int = 0; i count;i++ ) { if (!shapesArray[i].m_body.IsStatic()||includeStatic) { var tShape:b2Shape = shapesArray[i] as b2Shape; var inside:Boolean = tShape.TestPoint(tShape.m_body.GetXForm(), mouseb2Vec); if (inside) { body = tShape.m_body; break; } } } return body; };创建关节: var lbf_tempBody:b2Body = getBodyAtMouse(lbf_world, stage); if (lbf_tempBody) { //设置关节 var lbf_mouseJointDef:b2MouseJointDef = new b2MouseJointDef(); // 设置body1为无碰撞检测形状的静态刚体 lbf_mouseJointDef.body1 = lbf_world.GetGroundBody(); // 设置body2为当前被检测到被点击的刚体 lbf_mouseJointDef.body2 = lbf_tempBody; // 设置鼠标关节的目标位置 lbf_mouseJointDef.target.Set(mouseX / 30, mouseY / 30); // 设置鼠标关节的力度 lbf_mouseJointDef.maxForce = 10000; // 设置鼠标关节的时间步 lbf_mouseJointDef.timeStep = lbf_timeStep; // 在世界中创建这个b2MouseJoint对象 lbf_mouseJoint = lbf_world.CreateJoint(lbf_mouseJointDef) as b2MouseJoint lbf_mouseJointDef = null; lbf_tempBody = null; };控制关节: //控制鼠标关节很简单,就是在帧循环时间中不断更新鼠标关节的目标位置。 if (lbf_mouseJoint) { lbf_mouseJoint.SetTarget(new b2Vec2(mouseX / 30, mouseY / 30)); } 销毁关节: if (lbf_mouseJoint) { lbf_world.DestroyJoint(lbf_mouseJoint); lbf_mouseJoint = null; } 具体细节请详看: Box2D 鼠标与刚体交互之拖??刚体;Box2D 键盘事件;遇到问题应如何具体操作: 左右移动时: direction.Set(-2, 0);/direction.Set(2, 0); player.WakeUp(); player.ApplyForce(direction, player.GetWorldCenter()); 跳跃时: direction.Set(0, -5); player.WakeUp(); player.ApplyImpulse(direction, player.GetWorldCenter())

文档评论(0)

137****6572 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档