关于游戏的物理引擎

举个例子,前一阵子很火的一款游戏“愤怒的小鸟”如图:

关于游戏的物理引擎_第1张图片


在该游戏中,小鸟在空中飞行时,飞行轨迹为一条抛物线,符合物理逻辑规律,通过改变其发射的角度,改变其飞行的高远。

类似的各种游戏都有其一定模仿真实世界物理运动规律能力,就是通过”物理引擎“去实现的,严格意义上说,”物理引擎“模仿的物理运动规律是指牛顿力学运动规律,而非量子力学运动规律。

这篇博客中提到的各种物理引擎的介绍,为博主个人在学习C++过程中的总结,希望有什么问题请诸位看客及时提出方便博主纠正。

通过物理引擎能够使游戏中的”精灵“做出自由落体,抛物线运动,相互碰撞,反弹等效果,使用物理引擎还可以进行精确的碰撞检测,检测碰撞不使用物理物理引擎时,往往只是将精灵抽象为矩形,圆形等规则的几何图形,这样的算法比较简单,但是呈现出来的真实效果就相对较差,而且当自己去编写的时候,算法没有经过优化,性能必然不是很好。而物理引擎是经过优化的,所以建议在编写程序的时候使用已有的成熟的物理引擎。

目前只要使用的物理引擎有Box2D和Chipmunk。

物理引擎的核心概念主要有:

1.世界(world),即游戏中的物理世界。

2.物体(body),构成物理世界的基础,具有位置,旋转角度等多种特性,它上面的任何两点之间的距离都是完全不变的,它们非常的坚硬,所以也被称为刚体(rigid body)。

3.形状(shape),物体的形状,一个依附于物体的二维碰撞几何结构,具有摩擦和弹性等材料属性,由于物体被抽象成刚体,忽略了形状,但是物体间的摩擦和碰撞是与形状有关的,这时需要将形状依附在物体上。

4.接触点(contact),管理检测碰撞。

5.关节(joint),把两个或多个物体固定到一起的约束,跟人身上的关节一样,将身体的各种部分约束在一起。

物理引擎中,其本身是不包括精灵的,我的理解就是它和物理引擎相互独立,物理引擎创建一个物体后,需要通过代码将这个物体与精灵进行连接绑定,从而同步它们的状态。

你可能感兴趣的:(关于游戏的物理引擎)