Files
Studio/Assets/Scripts/XED/Machine/AGV/ObstacleSensor.cs
2025-02-19 17:24:26 +09:00

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);
}
}
}
}