Загрузка данных


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);
    }
}