using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
[SerializeField]
private float speed = 3f;
private Rigidbody2D rb;
[SerializeField]
private Animator animator;
private Vector2 move;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
rb.linearVelocity = move * speed;
}
public void Move(InputAction.CallbackContext context)
{
animator.SetBool("isMoving", true);
if (context.canceled)
{
animator.SetBool("isMoving", false);
animator.SetFloat("lastX", move.x);
animator.SetFloat("lastY", move.y);
}
// Сначала читаем новое значение движения
move = context.ReadValue<Vector2>();
// Потом уже отправляем его в аниматор
animator.SetFloat("inputX", move.x);
animator.SetFloat("inputY", move.y);
}
}
Вот код:
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
[SerializeField]
private float speed = 3f;
private Rigidbody2D rb;
[SerializeField]
private Animator animator;
private Vector2 move;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
rb.linearVelocity = move * speed;
}
public void Move(InputAction.CallbackContext context)
{
animator.SetBool("isMoving", true);
if (context.canceled)
{
animator.SetBool("isMoving", false);
animator.SetFloat("lastX, move.x");
animator.SetFloat("lastY, move.y");
}
move = context.ReadValue<Vector2>();
animator.SetFloat("inputX, move.x");
animator.SetFloat("inputY, move.y");
}
}