瘸腿蛤蟆笔记cocosdxBoxd物理引擎自由落体代码.docxVIP

瘸腿蛤蟆笔记cocosdxBoxd物理引擎自由落体代码.docx

  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文档。上传文档
查看更多
瘸腿蛤蟆笔记cocosdxBoxd物理引擎自由落体代码

瘸腿蛤蟆笔记39-cocos2d-x-3.2 Box2d物理引擎自由落体实现瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处:上篇回顾本篇名言:烦恼使我受着极大的影响……我一年多没有收到月俸,我和穷困挣扎;我在我的忧患中十分孤独,而且我的忧患是多么多,比艺术使我操心得更厉害! [米开朗基罗]前段时间蛤蟆出差北京去了,好在中秋节前回来了哈哈。上篇中,蛤蟆学习了Box2d物理引擎中的Ray-cast代码解释,接下去蛤蟆继续学习其他的Box2d引擎的使用。这次我们使用Box2d物理引擎来学习物理掉落的情况。理论介绍本次的理论知识基本和上次RayCast一致,需要补充如下内容:Body定义变量结构体b2BodyDef,这个结构体是在b2Body.h头文件中定义的,结构体具体定义如下,有些是带默认变量的。b2BodyDef(){userData = NULL;position.Set(0.0f, 0.0f);angle = 0.0f;linearVelocity.Set(0.0f, 0.0f);angularVelocity = 0.0f;linearDamping = 0.0f;angularDamping = 0.0f;allowSleep = true;awake = true;fixedRotation = false;bullet = false;type = b2_staticBody;active = true;gravityScale = 1.0f;}该结构体的作用是,我们创建一个Body的是时候必须要有这个结构体当做参数,然后根据这个结构体的参数创建我们想要的Body。这次我们重点关注下其中的类型。userData是用于存储应用程序自定义的数据的。position.Set用于设置Body创建的初始位置。Angle用于设置Body弧度。linearVelocity.Set用于设置Body的线速度,默认为0.angularVelocity用于设置角速度linearDamping线性阻尼用于减少线性速度,这个值可以设置大于1,但是大于 1 会导致阻尼效果会对时间步比较敏感。angularDamping角速度阻尼用于减少角速度,这个值也不能设置太大,太大会导致阻尼效果对时间步敏感。allowSleep默认是TRUE的,标注Body是否可以睡眠,如果设置FALSE,那么会增加CPU使用率。awake = true;标注Body起始时候是否睡眠。fixedRotation = false; Body是否可以旋转,默认是FALSE,不能旋转。这个对角色比较有用。bullet = false;这个用于标记是否是快速移动的Body。如果是快速移动的Body,则标记为True, 可以防止穿透其他移动的Body.这个只能对运动的Body设置,不够会增加CPU处理时间。type = b2_staticBody;type默认是值是0,就是静态的Body,静态的BODY没有质量,也没有速度,只能通过手动移动。值 1 ,则是运动的Body, 没有质量,但是有非零的速度(可以被程序员设置),通过解析器来实现移动。值 2 表示动态的Body,有一个非负的质量,非零的速度(确定于外力),也通过解析器来实现运动。它是个枚举类型,如下表示。enumb2BodyType{b2_staticBody = 0,b2_kinematicBody,b2_dynamicBody};active = true;标记是否是active.gravityScale = 1.0f;Body的重力放大系数。Fixture定义Fixture定义是用来创建Fixture的,定义如下:b2FixtureDef(){shape = NULL;userData = NULL;friction = 0.2f;restitution = 0.0f;density = 0.0f;isSensor = false;b2Filter filter;}Shape必须被设置,这个shape会被复制,所以之前的shape变量可以被其他使用。userData用来存储应用程序的特定数据friction指定摩擦力,通常0到1restitution指定回复力。通常0到1Density 表示密度isSensor表示是否是传感器,如果是传感器,那么会收集信息但是不会对碰撞产生反应。Filter过滤接触的DATA具体步骤我们接着使用上次学习的模板,大家可以在/detail/notbaron/7871237中下载这段代码。1、修改RayCastNew的构造函数如下RayCastNew(){b2Vec2 gravity;gravity.Set(0.0f, -10.0f);m_world = newb2World(gravity);

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档