попробуй:
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
public Animator anim;
private Rigidbody2D rb;
private Vector2 direction;
void Start()
{
rb = GetComponent();
}
void Update()
{
// Получаем ввод от оси горизонтали и вертикали
float horizontalInput = Input.GetAxisRaw("Horizontal");
float verticalInput = Input.GetAxisRaw("Vertical");
// Создаем вектор направления движения
direction = new Vector2(horizontalInput, verticalInput).normalized;
// Если вектор направления не нулевой, то устанавливаем направление взгляда
if (direction != Vector2.zero)
{
transform.up = direction; // Поворачиваем персонажа в направлении движения
}
// Устанавливаем параметры анимации
anim.SetFloat("Horizontal", direction.x);
anim.SetFloat("Vertical", direction.y);
anim.SetFloat("Speed", direction.magnitude); // Используем magnitude для скорости
}
void FixedUpdate()
{
// Двигаем персонажа
rb.MovePosition(rb.position + direction * speed * Time.fixedDeltaTime);
}
}
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
public Animator anim;
private Rigidbody2D rb;
private Vector2 direction;
void Start()
{
rb=GetComponent<Rigidbody2D>();
}
void Update(){
direction.x= Input.GetAxisRaw("Horizontal");
direction.y= Input.GetAxisRaw("Vertical");
anim.SetFloat("Horizontal", direction.x);
anim.SetFloat("Vertical", direction.y);
anim.SetFloat("Speed", direction.sqrMagnitude);
}
void FixedUpdate()
{
rb.MovePosition(rb.position+direction*speed*Time.fixedDeltaTime);
}
}