相关文章
概述
如果我们需要在项目中实现一些物理特效,例如让赛车加速、让砖块受到重力下落、让乒乓球碰到墙壁反弹回来等等,此时我们就需要用到 Unity 的物理系统。
Unity 的物理系统提供了一系列组件进行物理效果的模拟,我们使用时只需进行简单的设置,就能够让物体对碰撞和重力做出响应。更复杂的物理效果可以在脚本中实现,例如通过代码控制赛车的轮胎、控制角色的披风飘动(布料)、控制场景中的爆炸效果等。
需要注意的是, 在 Unity 中有两个独立的物理引擎:一个用于 3D
物理、一个用于 2D
物理。在 3D 物理和 2D 物理中很多概念相似,但它们使用的组件是不同的。例如在 3D 物理中有刚体的概念,相关组件叫做 Rigidbody,在 2D 物理中也有刚体的概念,但相关组件叫做 Rigidbody2D。
本章只专注于 Unity 中的 3D 物理系统,关于 2D 物理的相关内容在《Unity 2D 系统》章节中。建议大家先掌握 3D 物理系统,然后再掌握 2D 物理系统。
![](https://img.haomeiwen.com/i907396/3030240680a22004.png)
刚体和碰撞器
刚体组件的作用是使物体能够受力并施力,有了刚体组件物体就能响应各种力的作用,物体也会受到物理引擎的控制。
但只有刚体组件是不能发生碰撞的。刚体必须单独定义物理边界,才能够和其它具有物理边界的游戏对象发生碰撞。因为物理碰撞检测是比较耗费性能的,不可能让场景中的所有物体都能够互相碰撞。所以需要进行碰撞检测的物体,我们才给它设置物理边界。
物理边界表示一个虚拟的范围,在场景中看不到它的存在,它仅用于物理碰撞。在 Unity 物理系统中,定义游戏对象的物理边界有一组专门的组件,叫做碰撞器 Collider
。 碰撞器根据常用的形状进行细分,有盒型碰撞器 Box Collider
、球形碰撞器 Sphere Collider
、胶囊碰撞器 Capsule Collider
等。碰撞器的形状不一定和模型的形状完全一样,在不需要精确碰撞时,我们会用一些近似模型的形状表示物理边界。比如子弹的碰撞器可以是胶囊形状的、枕头的碰撞器可以是长方体形状的。
碰撞器的主要作用就是定义物体的物理边界,进行碰撞检测。所以如果两个物体 A 和 B 能够发生碰撞,必要的条件就是 A 和 B 身上必须都有碰撞器,并且 A 和 B 至少一个具有刚体,此时碰撞才能够发生。
![](https://img.haomeiwen.com/i907396/3030240680a22004.png)
其它物理功能
除了刚体和碰撞器以外,Unity 物理系统还提供了其它用于物理模拟的组件。
不同的关节 Joints
组件可以连接两个刚体,当一个刚体运动时,另一个与之相连的刚体也随之产生不同的运动效果。布料 Cloth
能够模拟角色的披风、旗帜等纺织物受力运动的效果。物理材质 Physic Material
则能够调整摩擦力和弹力的效果。物理系统还提供了一个角色控制器 Character Controller
,它已经为我们实现了大部分物理功能的模拟,能够快速创建角色。
![](https://img.haomeiwen.com/i907396/3030240680a22004.png)
(The End)
![](https://img.haomeiwen.com/i907396/a8d6f853d32f4669.png)
网友评论