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