2023-04-18 00:23:47 +02:00
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
2023-04-18 06:29:51 +02:00
|
|
|
using UnityEngine.AI;
|
2023-04-18 00:23:47 +02:00
|
|
|
|
|
|
|
public class FlareBeacon : MonoBehaviour
|
|
|
|
{
|
|
|
|
[SerializeField]
|
|
|
|
private float range = 1;
|
|
|
|
[SerializeField]
|
|
|
|
private float duration = 5f;
|
|
|
|
|
|
|
|
private List<GameObject> inRange= new List<GameObject>();
|
2023-04-18 06:29:51 +02:00
|
|
|
[SerializeField]
|
|
|
|
private NavMeshObstacle obstacle;
|
2023-04-18 00:23:47 +02:00
|
|
|
|
|
|
|
void OnDrawGizmosSelected()
|
|
|
|
{
|
|
|
|
// Draw a yellow sphere at the transform's position
|
|
|
|
Gizmos.color = Color.yellow;
|
|
|
|
|
|
|
|
Gizmos.DrawWireSphere(transform.position, range);
|
|
|
|
}
|
|
|
|
// Start is called before the first frame update
|
|
|
|
void Start()
|
|
|
|
{
|
2023-04-18 04:29:21 +02:00
|
|
|
transform.localEulerAngles = new Vector3(-89.98f, 0, 0);
|
|
|
|
Ray r = new Ray();
|
|
|
|
r.direction = -transform.forward;
|
|
|
|
r.origin = transform.position;
|
|
|
|
RaycastHit hit;
|
|
|
|
RaycastHit[] rays = Physics.RaycastAll(r);
|
|
|
|
foreach(RaycastHit _hit in rays)
|
|
|
|
{
|
|
|
|
if (_hit.transform.gameObject.GetComponent<FlareBeacon>() != null)
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
transform.position = _hit.point;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if(Physics.Raycast(r,out hit)){
|
|
|
|
// transform.position = hit.point;
|
|
|
|
}
|
2023-04-18 06:29:51 +02:00
|
|
|
obstacle.radius = this.range / 10;
|
2023-04-18 00:23:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Update is called once per frame
|
|
|
|
void Update()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnTriggerEnter(Collider other)
|
|
|
|
{
|
|
|
|
inRange.Add(other.gameObject);
|
|
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other)
|
|
|
|
{
|
|
|
|
inRange.Remove(other.gameObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|