版本:Unity 6 (6000.0)
语言:英语
碰撞体类型之间的交互
OnTrigger 事件

OnCollision 事件

当两个非触发碰撞体用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似值通常效率更高,并且在游戏玩法中难以区分。 更多信息
参见 术语表
接触时,会发生碰撞事件。

碰撞事件当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少有一个具有刚体组件并且正在运动。 更多信息
参见 术语表
的一些示例用法包括

  • 当弹丸击中目标时,销毁弹丸和敌人。
  • 当玩家角色接触到门时,触发动画打开门。
  • 当玩家角色接触到增强道具时,增加玩家的大小。

使用碰撞事件主要涉及以下 API 函数

对于碰撞事件,至少一个涉及的对象必须具有动态物理体(即,具有禁用Is Kinematic属性的刚体或关节体)。如果碰撞中的两个游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的特性由附加在其上的组件定义。 更多信息
参见 术语表
都是运动学物理体,则碰撞不会调用OnCollision函数。

以下示例在 Unity 调用每个函数时将消息打印到控制台。

using UnityEngine;
using System.Collections;

public class DoorObject : MonoBehaviour
{
    // “other” refers to the collider that is touching this collider
    void OnCollisionEnter (Collider other)
    {
        Debug.Log ("A collider has made contact with the DoorObject Collider");
    }

    void OnCollisionStay (Collider other)
    {
        Debug.Log ("A collider is in contact with the DoorObject Collider");
    }
    
    void OnCollisionExit (Collider other)
    {
        Debug.Log ("A collider has ceased contact with the DoorObject Collider");
    }
}

有关OnCollision事件的实际应用示例,请参阅碰撞体事件示例脚本

碰撞体类型之间的交互
OnTrigger 事件