Professional Professional
Мудрец
(15955)
7 месяцев назад
Проблема в том, что вы устанавливаете вращение объекта в Update методе каждый кадр на фиксированное значение (Quaternion.Euler(0,0,360)), что приводит к тому, что объект постоянно вращается вокруг оси Z на 360 градусов, и при этом не зависит от направления к игроку.
Для того чтобы противник вращался в сторону игрока, вы должны установить угол поворота относительно разницы между позицией противника и игрока. Вот как можно это сделать:
```csharp
private void Update() {
//поиск цели
target_position = player.transform.position;
//перемещение
if(transform.position.y > 49.5f){
transform.position = Vector2.MoveTowards(transform.position, target_position, speed * Time.deltaTime);
}
//вычисление направления к игроку
Vector3 direction = target_position - transform.position;
direction.Normalize();
//вычисление угла поворота к игроку
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
//установка вращения
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
//стрельба
if(transform.position.y > 49.5f && fire == true){
StartCoroutine(vistrel());
}
//смерть
if(Health <= 0){
Destroy(gameObject);
}
}
```
Этот код вычисляет направление к игроку и устанавливает угол поворота противника в сторону этого направления.
вот весь метод Update: