您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
36 行
930 B
36 行
930 B
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
[System.Serializable]
|
|
public class BoolEvent : UnityEvent<bool>
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// A generic class for a "zone", that is a trigger collider that can detect if an object of a certain type (layer) entered or exited it.
|
|
/// Implements <code>OnTriggerEnter</code> and <code>OnTriggerExit</code> so it needs to be on the same object that holds the Collider.
|
|
/// </summary>
|
|
public class ZoneTriggerController : MonoBehaviour
|
|
{
|
|
[SerializeField] private BoolEvent _enterZone = default;
|
|
[SerializeField] private LayerMask _layers = default;
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
if ((1 << other.gameObject.layer & _layers) != 0)
|
|
{
|
|
_enterZone.Invoke(true);
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
if ((1 << other.gameObject.layer & _layers) != 0)
|
|
{
|
|
_enterZone.Invoke(false);
|
|
}
|
|
}
|
|
}
|