要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。
-
物体发生碰撞的必要条件:
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。 -
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
一、碰撞器组件
- 盒碰撞器(Box Collider)
- 椭圆碰撞器(Sphere Collider)
- 胶囊碰撞器(Capsule Collider)
- 车轮碰撞器(Wheel Collider):专用于车辆
- 网格碰撞器(Mesh Collider)
- 地形碰撞器(Terrain Collider)
所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
note盒碰撞器(Box Collider)
盒子碰撞器是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可以做门,墙等
盒碰撞器(Box Collider)椭圆碰撞器(Sphere Collider)
椭圆碰撞器是一个基本球形的基本碰撞体,球形碰撞体的三维大小可以均匀的调节,适用于落石,球形障碍物
椭圆碰撞器(Sphere Collider)胶囊碰撞器(Capsule Collider)
胶囊碰撞器是由一个圆柱体和与其相连的两个半球体组成
胶囊碰撞器(Capsule Collider)车轮碰撞器(Wheel Collider)
车轮碰撞器是一种针对地面车辆的特殊碰撞体,有内置的碰撞检测、车轮物理系统及有滑胎摩擦的参考体。
车轮碰撞器(Wheel Collider)网格碰撞器(Mesh Collider)
网格碰撞器通过获取网格对象并在其基础上构建碰撞碰撞。更加精细,但是会使用更多系统资源。开启Convex参数的网格碰撞体才可以与其他网格碰撞体发生碰撞。
网格碰撞器(Mesh Collider)通常两个网格碰撞体之间不会发生碰撞,但是它们都可以与基本碰撞体发生碰撞
如果要让它发生碰撞:开启Convex属性
地形碰撞器(Terrain Collider)
地形碰撞器是具有相同的形状的一个碰撞面地形它连接到对象
地形碰撞器(Terrain Collider)二、碰撞检测
-
在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:
-
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器 -
触发信息检测:
1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器
Layer-Based Collision Detection 基于层的碰撞检测
在Unity3以后版本,我们介绍了一种称为“基于层的碰撞检测”(Layer-Based Collision Detection)的东西,可以让你有选择地控制Unity对象和他们附加的特定层碰撞。
选择选定游戏对象的层.
Edit->Project Settings->Physics.,打开物理引用界面. 在碰撞矩阵中选择要与其他层相互作用的层,勾选即可.
物理引用界面
网友评论