本文主要是介绍关于游戏的物理引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
举个例子,前一阵子很火的一款游戏“愤怒的小鸟”如图:
在该游戏中,小鸟在空中飞行时,飞行轨迹为一条抛物线,符合物理逻辑规律,通过改变其发射的角度,改变其飞行的高远。
类似的各种游戏都有其一定模仿真实世界物理运动规律能力,就是通过”物理引擎“去实现的,严格意义上说,”物理引擎“模仿的物理运动规律是指牛顿力学运动规律,而非量子力学运动规律。
这篇博客中提到的各种物理引擎的介绍,为博主个人在学习C++过程中的总结,希望有什么问题请诸位看客及时提出方便博主纠正。
通过物理引擎能够使游戏中的”精灵“做出自由落体,抛物线运动,相互碰撞,反弹等效果,使用物理引擎还可以进行精确的碰撞检测,检测碰撞不使用物理物理引擎时,往往只是将精灵抽象为矩形,圆形等规则的几何图形,这样的算法比较简单,但是呈现出来的真实效果就相对较差,而且当自己去编写的时候,算法没有经过优化,性能必然不是很好。而物理引擎是经过优化的,所以建议在编写程序的时候使用已有的成熟的物理引擎。
目前只要使用的物理引擎有Box2D和Chipmunk。
物理引擎的核心概念主要有:
1.世界(world),即游戏中的物理世界。
2.物体(body),构成物理世界的基础,具有位置,旋转角度等多种特性,它上面的任何两点之间的距离都是完全不变的,它们非常的坚硬,所以也被称为刚体(rigid body)。
3.形状(shape),物体的形状,一个依附于物体的二维碰撞几何结构,具有摩擦和弹性等材料属性,由于物体被抽象成刚体,忽略了形状,但是物体间的摩擦和碰撞是与形状有关的,这时需要将形状依附在物体上。
4.接触点(contact),管理检测碰撞。
5.关节(joint),把两个或多个物体固定到一起的约束,跟人身上的关节一样,将身体的各种部分约束在一起。
物理引擎中,其本身是不包括精灵的,我的理解就是它和物理引擎相互独立,物理引擎创建一个物体后,需要通过代码将这个物体与精灵进行连接绑定,从而同步它们的状态。
这篇关于关于游戏的物理引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!