using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class FlareBeacon : MonoBehaviour { [SerializeField] private float range = 1; public float Range { get { return range; }} [SerializeField] private float duration = 5f; private List inRange= new List(); [SerializeField] private NavMeshObstacle obstacle; private FlareRegister register; 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() { register = FlareRegister.instance; register.beacons.Add(this); 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() != null) { continue; } transform.position = _hit.point; break; } if(Physics.Raycast(r,out hit)){ // transform.position = hit.point; } if(obstacle!=null) obstacle.radius = this.range / 10; } // 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); } }