Здравствуйте. Пытаюсь сейчас сделать так, чтобы у самого ближайшего врага материал становился красным цветом, а когда он не в радиусе, чтобы он обратно становился зеленым. Я не понял как это сделать
- Как сделать объект обратно другим цветом? Его ведь больше нет в массиве и доступ я к нему получить не могу
- И главная проблема, почему последний ближайший так и остается типо ближайшим? То есть, я подхожу к нему, выводится что он рядом. Затем отхожу и все равно выводится что он рядом. Хотя и в массиве 0 объектов, и он не в радиусе.
public LayerMask layerMask; //enemies
private Transform nearestEnemy; //ближайший из всех враг
private float radius = 5f;
public void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, radius);
}
public void FixedUpdate()
{
Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius, layerMask);
float _maxDistance = Mathf.Infinity;
foreach (Collider collider in hitColliders)
{
float distance = Vector3.Distance(transform.position, collider.transform.position);
if (distance < _maxDistance)
{
_maxDistance = distance;
nearestEnemy = collider.transform;
}
}
if (nearestEnemy != null)
{
nearestEnemy.GetComponent<MeshRenderer>().material.color = Color.yellow; //если объект в радиусе
Debug.Log("Nearest Enemy: " + nearestEnemy + "; Distance: " + _maxDistance);
}
else Debug.Log("There is no enemy in the given radius");
}
Буду рад любой помощи, ссылке на статью и просто подсказке. Спасибо