Box2D新手入门顺阶教程.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Box2D新手入门顺阶教程

Box2D新手入门顺阶教程HelloWorld 开始之前,我假想你已经看过了HelloWorld的源代码,并看了用户手册中关于HelloWorld的相关说明,而且已经大致明白了大多数内容。 其实HelloWorld已经用极其简单的语言向你描述了Box2D物理引擎的运作机制,我们可以归纳一下步骤: 1、 建立一个世界,这个世界基于一个b2AABB框,并设立了一个g值和一个是否允许休眠的bool型变量。 2、 建立一个静态刚体地表,这里讲述了定义Box2D物理引擎中最为重要的一个东西——刚体的详细过程:首先是定义一个形状(可以是复合形状,这个在第二部分讲述),然后把形状通过AddShape添加进刚体定义,创建这个刚体。 3、 重复创建刚体这个过程,直至你没有需求了。 4、 在你的循环中加入世界的更新函数。 其实上面的步骤也是众多物理引擎甚至于其他引擎采用的方式。 HelloWorld教程是相当简单的,这个时候你甚至都不用去想世界是怎么运作的,你可以利用相关函数取得刚体的位置和旋转角度,然后在游戏的渲染部分去更新渲染你的角色对象。 看完HelloWorld,你可以不去想整个世界是怎样的,因为这个世界相对这时的你来说,确实是太复杂了,而你静下心来时,不妨回头看看我们用到的概念和数据类型,来温顾一下。 概念 在这一个例子中有几个概念, 世界(b2World):世界就是一个环境,所有物理运算都在这个里面进行。 形状定义(b2ShapeDef):形状定义是什么?说简单点形状定义就是定义你这个对象的样子,它用来做什么?就是用来确定你的碰撞。 刚体定义(b2BodyDef):刚体定义就是设定刚体的初始具体,在目前来说,最大的功能就是把你定义好的形状加到你想到的刚体上。 刚体(b2Body):刚体就是物理引擎里面的东西(对象),它可以受力的作用进行当前位置的变化旋转等。你要在世界中使用的所有物体目前来说都是刚体。 类型定义 几个类型定义(熟悉Box2D里面的类型定义可以对我们将来正确赋值运算有着很大的帮助): typedef signed char int8; typedef signed short int16; typedef signed int int32; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef float float32; const float32 b2_pi = 3.14159265359f; 数据类型 1、 b2Vec2 就像在3D中Vector3类的使用一样,b2Vec2在Box2D中也应用广泛,你几乎在每个时刻都用到它,比如说定义坐标位置,定义Box大小等 b2Vec2是由float32类型的x,y组成,支持负向量,+=,-=,*=操作符, 支持的方法有 Void SetZero();设置x,y为0 Void Set(float32 x_, float32 y_);设置x,y为指定值 b2Vec2 Make(float32 x_, float32 y_),生成一个值指定的b2Vec2 float32 Length()取得向量的长度或模 float32 Normalize()标准化向量 bool IsValid()检查是否有效 如果在这里你并不了解我在这里所提到的一些数学概念,比如说标准化向量,模,可以参照b2Math.h文件,或者直接找本数学书来看。 2、b2Mat22 在HelloWorld教程中,b2Mat22虽然没有被使用到,我们这里先提出这个概念,以便于在下一节中讨论。 其实b2Mat22一个由两个b2Vec2组成的2*2方阵,你可以直接由两个b2Vec2(col1、col2)构造或者由一个角度值构造。 他的主要方法有: void Set(const b2Vec2 c1, const b2Vec2 c2) void Set(float32 angle), 提供两种方式赋值方法 void SetIdentity(),设定恒等式 void SetZero(),把col1、col2的x,y都清为0 b2Mat22 Invert(),转换相关数据 b2Vec2 Solve(const b2Vec2 b),解决A * x = b 3、b2AABB b2AABB就是一个盒子,是由两个向量组成,一个为minVertex是最小顶点,另一个为maxVertex是最大顶点,通过这两个顶点来表示最为普通的AABB框。 4、b2ShapeDef b2ShapeDef直翻为形

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档