37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
|
||
using UnityEngine;
|
||
|
||
[RequireComponent(typeof(Collider))]
|
||
public class EventTriggerOnCollision : MonoBehaviour
|
||
{
|
||
[Tooltip("Тег объекта, который должен активировать триггер.")] [SerializeField]
|
||
private string _targetTag;
|
||
|
||
[Tooltip("Событие, которое будет вызвано при входе в триггер.")]
|
||
[SerializeField] private GameEvent _eventToRaise;
|
||
|
||
[Tooltip("Если true, событие будет срабатывать только один раз.")]
|
||
[SerializeField] private bool _triggerOnce = true;
|
||
|
||
private bool _hasBeenTriggered = false;
|
||
|
||
private void OnTriggerEnter(Collider other)
|
||
{
|
||
if (_hasBeenTriggered && _triggerOnce)
|
||
{
|
||
return;
|
||
}
|
||
|
||
if (other.CompareTag(_targetTag))
|
||
{
|
||
_eventToRaise.Raise();
|
||
_hasBeenTriggered = true;
|
||
}
|
||
}
|
||
|
||
private void OnValidate()
|
||
{
|
||
// Убедимся, что коллайдер на объекте является триггером
|
||
GetComponent<Collider>().isTrigger = true;
|
||
}
|
||
} |