43 lines
1.2 KiB
C#
43 lines
1.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace XED.Machine
|
|
{
|
|
[RequireComponent(typeof(SphereCollider))]
|
|
public class ObstacleSensor : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
LayerMask obstacleLayer; // Àå¾Ö¹° ·¹ÀÌ¾î ¸¶½ºÅ©
|
|
|
|
public event Action<GameObject> onObstacleEnter;
|
|
public event Action<GameObject> onObstacleExit;
|
|
|
|
public void Set(LayerMask layermask, float sensorRadius = 10f)
|
|
{
|
|
gameObject.GetComponent<SphereCollider>().radius= sensorRadius;
|
|
obstacleLayer = layermask;
|
|
}
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
int otherLayerMask = 1 << other.gameObject.layer;
|
|
if ((obstacleLayer.value & otherLayerMask) != 0)
|
|
{
|
|
onObstacleEnter?.Invoke(other.gameObject);
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
{
|
|
int otherLayerMask = 1 << other.gameObject.layer;
|
|
if ((obstacleLayer.value & otherLayerMask) != 0)
|
|
{
|
|
onObstacleExit?.Invoke(other.gameObject);
|
|
}
|
|
}
|
|
}
|
|
}
|