alon_mix
@alon_mix
1

Автопушка 2д и как в этом разобраться?

Всем привет. Искал видео по автопушке в 2д и в итоге видеоуроков практически нет или же они в 3д. Конечно же мне не мешало их переделать под свой проект, но есть один нюанс который я пока не могу решить.
public class AI : MonoBehaviour {
[Header ("Характеристики")]
public Transform target;

public Transform Tower;
public float speedTurn = 5f;
public float range = 10f;

public string enemyTag = "Enemy";

private void Start()
{

    InvokeRepeating("UpdateTarget", 0f, 0.5f);
}

void Update()
{

    if (target == null)
        return;

    Vector3 direction = target.position - transform.position;
    Quaternion lookRotation = Quaternion.LookRotation(direction);
    Vector3 rotation = Quaternion.Lerp(Tower.rotation, lookRotation, Time.deltaTime * speedTurn).eulerAngles;
    Tower.rotation = Quaternion.Euler(0f, 0f, rotation.z); 



}

void UpdateTarget()
{

        GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);        
        float shortesDistance = Mathf.Infinity;
        GameObject nearesEnemy = null;
        foreach (GameObject enemy in enemies)
        {
            float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
            if (distanceToEnemy < shortesDistance)
            {
                shortesDistance = distanceToEnemy;
                nearesEnemy = enemy;
            }
        }

        if (nearesEnemy != null && shortesDistance <= range)
        {
            target = nearesEnemy.transform;
        }
        else
        {
            target = null;
        }
    }

private void OnDrawGizmosSelected()
{
    Gizmos.color = Color.blue;
    Gizmos.DrawWireSphere(transform.position, range);
}


}

Сама проблема в том, что "пушка" находит "врага" на близком расстояние, а именно начинает поворачиваться на него.
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы