42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
|
|
using System.Collections.Generic;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.Rendering;
|
||
|
|
|
||
|
|
public class Tower : MonoBehaviour
|
||
|
|
{
|
||
|
|
public float range;
|
||
|
|
[SerializeField] private LayerMask whatIsEnemy;
|
||
|
|
private Collider[] collidersInRange;
|
||
|
|
public List<EnemyController> enemiesInRange = new List<EnemyController>();
|
||
|
|
private float checkCounter;
|
||
|
|
[SerializeField] private float checkTime = .2f;
|
||
|
|
[HideInInspector] public bool enemiesUpdated;
|
||
|
|
|
||
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||
|
|
void Start()
|
||
|
|
{
|
||
|
|
checkCounter = checkTime;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Update is called once per frame
|
||
|
|
void Update()
|
||
|
|
{
|
||
|
|
enemiesUpdated = false;
|
||
|
|
checkCounter -= Time.deltaTime;
|
||
|
|
if (checkCounter <= 0f)
|
||
|
|
{
|
||
|
|
checkCounter = checkTime;
|
||
|
|
collidersInRange = Physics.OverlapSphere(transform.position, range, whatIsEnemy);
|
||
|
|
enemiesInRange.Clear();
|
||
|
|
foreach (Collider collider in collidersInRange)
|
||
|
|
{
|
||
|
|
if (collider.gameObject.GetComponent<EnemyController>() != null)
|
||
|
|
{
|
||
|
|
enemiesInRange.Add(collider.GetComponent<EnemyController>());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
enemiesUpdated = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|