Делаю игру на Unity2D с видом сверху, где нужно уничтожить базу врага. Мне должны мешать различные роботы (враги), но я застопорился на создании ИИ. Я сделал патрулирование, но не смог реализовать преследование. Я хочу что бы враг поворачивался к игроку и шел вперед и не знаю как сделать. Пытался через LookAt, но поворот слишком резкий. Если через Qutarnion.Lerp, то враг постоянно поворачивается на 0ое значение по Z или поворачивается, но по всем координатам, хотя нужно только по Z. Так как мне повернуть врага к игроку? Вот код, не судите строго ибо только начинаю.
public class EnemyAI : MonoBehaviour {
public float speed;
public float mSpeed;
private float waitTime;
public float StartWaitTime;
float angle;
public float value;
public float mvalue;
public Transform player;
void Start()
{
waitTime = StartWaitTime;
}
void Update() {
if (waitTime <= 0)
{
value = Random.Range(0, 10);
mvalue = Random.Range(1, 4);
waitTime = StartWaitTime;
RandomAngle();
}
else
{
waitTime -= Time.deltaTime; //таймер
}
if(Vector2.Distance(transform.position, player.transform.position) < 10f)
{
Quaternion Rot2 = Quaternion.Euler(0, 0, player.position.z);
transform.rotation = Quaternion.Lerp(transform.rotation, Rot2, Time.deltaTime * speed);
}
else if (mvalue == 2)
{
transform.Translate(Vector2.left * mSpeed * Time.deltaTime);
}
else
{
Quaternion Rot = Quaternion.Euler(0, 0, angle);
transform.rotation = Quaternion.Lerp(transform.rotation, Rot, Time.deltaTime * speed);
}
}
void RandomAngle()
{
if (value == 1)
{
angle = 45;
}
if (value == 2)
{
angle = 90;
}
if (value == 3)
{
angle = -45;
}
if (value == 4)
{
angle = -90;
}
if (value == 5)
{
angle = 135;
}
if (value == 6)
{
angle = 180;
}
if (value == 7)
{
angle = -135;
}
if (value == 8)
{
angle = 0;
}
}
}