UnityGameProjectsCode / RelianceGame / Stat Control / PlayerScanning.cs
PlayerScanning.cs
Raw
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PlayerScanning : MonoBehaviour
{
    public int scanningRange;
    private List<GameObject> markers = new List<GameObject>();
    private SphereCollider sphere;

    private void Awake()
    {
        foreach (GameObject marker in GameObject.FindGameObjectsWithTag("Enemy Marker"))
        {
            markers.Add(marker);
        }
        sphere = GetComponent<SphereCollider>();

        sphere.radius = scanningRange;
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Enemy")
        {
            GameObject targetEnemy = other.gameObject;

            for (int i = 0; i < markers.Count; i++)
            {
                if (markers[i].GetComponent<Marker>().GetCurrentObj() == targetEnemy)
                {
                    markers[i].GetComponent<Image>().enabled = true;
                    markers[i].GetComponent<Marker>().SetMarkerEnabled(true);
                }
            }
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.tag == "Enemy")
        {
            GameObject targetEnemy = other.gameObject;

            for (int i = 0; i < markers.Count; i++)
            {
                if (markers[i].GetComponent<Marker>().GetCurrentObj() == targetEnemy)
                {
                    markers[i].GetComponent<Image>().enabled = false;
                    markers[i].GetComponent<Marker>().SetMarkerEnabled(false);
                }
            }
        }
    }

    public void UpdateScanRange(int newRange)
    {
        scanningRange = newRange;
        sphere.radius = scanningRange;
    }
}