Box2DJS教程1-3--有关Box2D
更新日期:
本节简单介绍一下Box2D,以及其中的一些基本概念。
Box2D
Box2D介绍
Box2D是一个用于游戏的2D刚体仿真库,它是一个非常出名的物理引擎。
程序员可以在他们的游戏里使用它,它可以使物体的运动更加可信,让世界看起来更具交互性。
从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让牛顿来做导演。
它通过用户设定的参数如重力,密度,摩擦,弹性等参数计算碰撞,角度,力和动力等,使物体运动完全遵循牛顿定律,使游戏中物体的运动更加真实,增强游戏世界中物体动作的真实感,从而提高游戏质量,让游戏场景看起来更具交互性。这些计算需要大量的物理和数学知识。
Box2D版本
Box2D提供C++、Java、flash等版本。
Box2D基本概念
Box2D 中有一些基本的对象,这里我们先做一个简要的定义,在随后的文档里会有更详细的描述。
- 刚体(rigid body)
一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。它们就像钻石那样坚硬。在后
面的讨论中,我们用物体(body)来代替刚体。
- 形状(shape)
一块严格依附于物体(body)的2D碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢
复(restitution)的材料性质。
- 约束(constraint)
一个约束(constraint)就是消除物体自由度的物理连接。在2D中,一个物体有3个自由度。如果我
们把一个物体钉在墙上(像摆锤那样),那我们就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋
转,所以这个约束消除了它2个自由度。
- 接触约束(contact constraint)
一个防止刚体穿透,以及用于模拟摩擦(friction)和恢复(restitution)的特殊约束。你永远都不必创建
一个接触约束,它们会自动被Box2D创建。
- 关节(joint)
它是一种用于把两个或多个物体固定到一起的约束。Box2D支持的关节类型有:旋转,棱柱,距离等
等。关节可以支持限制(limits)和马达(motors)。
- 关节限制(joint limit)
一个关节限制(joint limit)限定了一个关节的运动范围。例如人类的胳膊肘只能做某一范围角度的运
动。
- 关节马达(joint motor)
一个关节马达能依照关节的自由度来驱动所连接的物体。例如,你可以使用一个马达来驱动一个肘的
旋转。
- 世界(world)
一个物理世界就是物体,形状和约束相互作用的集合。Box2D支持创建多个世界,但这通常是不必要
的。
HelloWorld
步骤
- 建立一个世界,这个世界基于一个b2AABB框,并设立了一个g值和一个是否允许休眠的bool型变量。
- 建立一个静态刚体地表,这里讲述了定义Box2D物理引擎中最为重要的一个东西——刚体的详细过程:
- 首先是定义一个形状(可以是复合形状,这个在第二部分讲述)
- 然后把形状通过AddShape添加进刚体定义,创建这个刚体。
- 重复创建刚体这个过程,直至你没有需求了。
- 在你的循环中加入世界的更新函数。
概念定义
世界(b2World):
世界就是一个环境,所有物理运算都在这个里面进行。形状定义(b2ShapeDef):
形状定义是什么?说简单点形状定义就是定义你这个对象的样子,它用来做什么?就是用来确定你的碰撞。刚体定义(b2BodyDef):
刚体定义就是设定刚体的初始具体,在目前来说,最大的功能就是把你定义好的形状加到你想到的刚体上。刚体(b2Body):
刚体就是物理引擎里面的东西(对象),它可以受力的作用进行当前位置的变化旋转等。你要在世界中使用的所有物体目前来说都是刚体。
返回总目录
码生艰难,写文不易,给我家猪囤点猫粮了喵~
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢
如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢