sing UnityEngine;
public class walk : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
public Transform groundCheck;
public float groundCheckRadius = 0.2f;
public LayerMask groundLayer;
private Rigidbody2D rb;
private Animator anim;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void Update()
{
float moveInput = Input.GetAxisRaw("Horizontal");
rb.linearVelocity = new Vector2(moveInput * moveSpeed, rb.linearVelocity.y);
// Разворот в сторону движения (анимация walkRight рисована вправо)
if (moveInput > 0)
transform.localScale = new Vector3(Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z);
else if (moveInput < 0)
transform.localScale = new Vector3(-Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z);
// Прыжок только с земли
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.linearVelocity = new Vector2(rb.linearVelocity.x, jumpForce);
}
// Передача данных в Animator
if (anim != null)
{
anim.SetBool("isWalking", moveInput != 0);
}
}
private void FixedUpdate()
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundLayer);
}
}