Всем привет. Искал видео по автопушке в 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);
}
}
Сама проблема в том, что "пушка" находит "врага" на близком расстояние, а именно начинает поворачиваться на него.