Unity3D基础15:触发器
前文:https://blog.****.net/Jaihk662/article/details/86760441(碰撞检测)
PS:注释和讲解部分在代码中
一、触发器
触发事件:当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件
触发用途:不与目标物体发生直接的碰撞,而是只要进入目标物体的“触发范围”就能执行某些特定操作
打开触发器:选中碰撞体组件面板上的“Is Trigger”选项,就会转为触发器,转为触发器后,移动的刚体会穿透碰撞体
触发器监测方法:
- OnTriggerEnter(Collider):进入触发范围内时调用,只会调用该方法一次
- OnTriggerExit(Collider):离开触发范围内时调用,只会调用该方法一次
- OnTriggerStay(Collider):在触发范围内时,会持续调用该方法
Collider参数:一个类,用于传递触发信息对象
- Collider.gameObject属性:当前物体触发的物体的引用
- gameObject.name属性:当前物体的名字
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Trig : MonoBehaviour
{
void Start()
{
Debug.Log("StartforTrig");
}
void Update()
{
}
void OnTriggerEnter(Collider coll)
{
Debug.Log("触发开始:" + coll.gameObject.name);
}
void OnTriggerStay(Collider coll)
{
Debug.Log("触发中:" + coll.gameObject.name);
}
void OnTriggerExit(Collider coll)
{
Debug.Log("触发结束:" + coll.gameObject.name);
}
}
效果如下:
二、触发器与碰撞体的交互
注意触发器只是碰撞体的一个属性
假设存在两个物体A和B,要实现碰撞检测:
- A和B一定要有一个是刚体,运动的那个必须是刚体
- 只要有一个是触发器,那么就无法触发碰撞体,也就是说必须两个都是碰撞体
- 可以给A和B各挂一个脚本实现相互检测碰撞
假设存在两个物体A和B,要实现触发检测:
- 运动的那个必须是刚体
- 只要有一个是触发器,就可以实现触发检测
- 可以给A和B各挂一个脚本实现相互检测触发