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


using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [Header("Настройки движения")]
    public float speed = 8f;
    public float jumpForce = 12f;

    private Rigidbody2D rb;
    private Animator anim;
    private bool isGrounded;

    void Start()
    {
        // Привязываем компоненты
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        // 1. Получаем ввод с клавиатуры (A/D или стрелки)
        float moveInput = Input.GetAxis("Horizontal");

        // 2. Двигаем персонажа
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);

        // 3. ПЕРЕДАЕМ СКОРОСТЬ В АНИМАТОР
        // Mathf.Abs делает число всегда положительным (даже если бежим влево, скорость будет > 0)
        anim.SetFloat("Speed", Mathf.Abs(moveInput));

        // 4. РАЗВОРАЧИВАЕМ СПРАЙТ
        if (moveInput > 0)
        {
            transform.localScale = new Vector3(1, 1, 1); // Смотрит вправо
        }
        else if (moveInput < 0)
        {
            transform.localScale = new Vector3(-1, 1, 1); // Смотрит влево (зеркально)
        }

        // 5. ПРЫЖОК
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
        }
    }

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

    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground")) isGrounded = false;
    }
}