Unity3d 开发技术

物理系统概述

2018-06-06  本文已影响5人  波波课堂

相关文章

《物理系统概述》
《刚体》
《碰撞器》

概述

如果我们需要在项目中实现一些物理特效,例如让赛车加速、让砖块受到重力下落、让乒乓球碰到墙壁反弹回来等等,此时我们就需要用到 Unity 的物理系统

Unity 的物理系统提供了一系列组件进行物理效果的模拟,我们使用时只需进行简单的设置,就能够让物体对碰撞和重力做出响应。更复杂的物理效果可以在脚本中实现,例如通过代码控制赛车的轮胎、控制角色的披风飘动(布料)、控制场景中的爆炸效果等。

需要注意的是, 在 Unity 中有两个独立的物理引擎:一个用于 3D 物理、一个用于 2D 物理。在 3D 物理和 2D 物理中很多概念相似,但它们使用的组件是不同的。例如在 3D 物理中有刚体的概念,相关组件叫做 Rigidbody,在 2D 物理中也有刚体的概念,但相关组件叫做 Rigidbody2D。

本章只专注于 Unity 中的 3D 物理系统,关于 2D 物理的相关内容在《Unity 2D 系统》章节中。建议大家先掌握 3D 物理系统,然后再掌握 2D 物理系统。

刚体和碰撞器

刚体组件的作用是使物体能够受力并施力,有了刚体组件物体就能响应各种力的作用,物体也会受到物理引擎的控制。

但只有刚体组件是不能发生碰撞的。刚体必须单独定义物理边界,才能够和其它具有物理边界的游戏对象发生碰撞。因为物理碰撞检测是比较耗费性能的,不可能让场景中的所有物体都能够互相碰撞。所以需要进行碰撞检测的物体,我们才给它设置物理边界。

物理边界表示一个虚拟的范围,在场景中看不到它的存在,它仅用于物理碰撞。在 Unity 物理系统中,定义游戏对象的物理边界有一组专门的组件,叫做碰撞器 Collider。 碰撞器根据常用的形状进行细分,有盒型碰撞器 Box Collider球形碰撞器 Sphere Collider胶囊碰撞器 Capsule Collider 等。碰撞器的形状不一定和模型的形状完全一样,在不需要精确碰撞时,我们会用一些近似模型的形状表示物理边界。比如子弹的碰撞器可以是胶囊形状的、枕头的碰撞器可以是长方体形状的。

碰撞器的主要作用就是定义物体的物理边界,进行碰撞检测。所以如果两个物体 A 和 B 能够发生碰撞,必要的条件就是 A 和 B 身上必须都有碰撞器,并且 A 和 B 至少一个具有刚体,此时碰撞才能够发生。

其它物理功能

除了刚体和碰撞器以外,Unity 物理系统还提供了其它用于物理模拟的组件。

不同的关节 Joints 组件可以连接两个刚体,当一个刚体运动时,另一个与之相连的刚体也随之产生不同的运动效果。布料 Cloth 能够模拟角色的披风、旗帜等纺织物受力运动的效果。物理材质 Physic Material 则能够调整摩擦力和弹力的效果。物理系统还提供了一个角色控制器 Character Controller,它已经为我们实现了大部分物理功能的模拟,能够快速创建角色。

(The End)

上一篇 下一篇

猜你喜欢

热点阅读