This repository has been archived on 2023-09-13. You can view files and clone it, but cannot push or open issues or pull requests.
station_obscurum_unity/Assets/Scripts/Item/FlareBeacon/FlareBeacon.cs

71 lines
1.7 KiB
C#

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<GameObject> inRange= new List<GameObject>();
[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<FlareBeacon>() != 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);
}
}