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 中也应用广泛,你几乎在每个...