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


using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Настройки персонажа, которые можно менять в Инспекторе
    [Header("Настройки движения")]
    [SerializeField] private float speed = 8f;      // Скорость бега
    [SerializeField] private float jumpForce = 12f; // Сила прыжка

    // Переменные для хранения компонентов
    private Rigidbody2D rb;
    private bool isGrounded; // Стоит ли персонаж на земле

    // Метод Start вызывается один раз в самом начале
    void Start()
    {
        // Получаем ссылку на компонент Rigidbody2D, который мы добавили белочке
        rb = GetComponent<Rigidbody2D>();
    }

    // Метод Update вызывается каждый кадр (здесь считываем нажатия клавиш)
    void Update()
    {
        // 1. Считываем движение по горизонтали (A/D или стрелки)
        // moveInput будет от -1 (влево) до 1 (вправо)
        float moveInput = Input.GetAxis("Horizontal");

        // Применяем скорость к Rigidbody. Сохраняем текущую скорость по вертикали (y).
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);

        // 2. Прыжок. Проверяем: нажата ли Кнопка "Прыжок" (Пробел) И стоит ли персонаж на земле
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            // Применяем силу вверх (импульс)
            rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
        }
    }

    // --- ФИЗИКА И СТОЛКНОВЕНИЯ ---

    // Эти методы работают благодаря BoxCollider2D

    // Вызывается, когда коллайдер белочки касается другого коллайдера
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Проверяем, коснулись ли мы объекта с тегом "Ground"
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = true; // Мы на земле
        }
    }

    // Вызывается, когда коллайдер белочки перестает касаться другого коллайдера
    private void OnCollisionExit2D(Collision2D collision)
    {
        // Если мы перестали касаться земли
        if (collision.gameObject.CompareTag("Ground"))
        {
            isGrounded = false; // Мы в воздухе
        }
    }
}