using UnityEngine;
public class EnemyAI : MonoBehaviour
{
[Header("Настройки ИИ")]
public float moveSpeed = 2f;
public float attackRange = 1.2f;
public float attackCooldown = 2f;
[Header("Ссылки")]
public Rigidbody2D rb;
public Animator animator;
public SpriteRenderer spriteRenderer;
private Transform player;
private float nextAttackTime;
void Start()
{
// ЗАДАНИЕ 1: Найти игрока на сцене по тегу "Player".
// player = ...
}
void Update()
{
if (player == null) return;
// ЗАДАНИЕ 2: Вычислить расстояние до игрока.
// float distance = ...
// ЗАДАНИЕ 3: Написать логику выбора состояния.
// Если расстояние больше attackRange — вызываем метод Move().
// Иначе, если пришло время атаковать (Time.time >= nextAttackTime) — вызываем метод Attack().
}
void Move()
{
// Вычисляем направление к игроку
Vector2 direction = (player.position - transform.position).normalized;
// ЗАДАНИЕ 4: Анимация и поворот.
// 1. Установите в аниматоре bool "isMoving" в значение true.
// 2. Разверните спрайт (flipX) в зависимости от знака direction.x.
// Движение
rb.MovePosition(rb.position + direction * moveSpeed * Time.fixedDeltaTime);
}
void Attack()
{
// ЗАДАНИЕ 5: Подготовка к атаке.
// 1. Остановите анимацию бега (isMoving = false).
// 2. Обновите время следующей атаки (nextAttackTime = текущее время + кулдаун).
// ЗАДАНИЕ 6: Выбор направления удара (Самое сложное!).
Vector2 dirToPlayer = (player.position - transform.position).normalized;
int attackDir = 2; // По умолчанию 2 (в сторону)
// Допишите логику:
// Если dirToPlayer.y больше 0.7 — attackDir = 0 (Вверх).
// Если dirToPlayer.y меньше -0.7 — attackDir = 1 (Вниз).
// ЗАДАНИЕ 7: Передача данных в Animator.
// 1. Установите int "attackDirection" равным attackDir.
// 2. Запустите триггер "Attack".
// Здесь можно вызвать логику нанесения урона, которую мы писали ранее
Debug.Log("Враг наносит удар в направлении: " + attackDir);
}
}