всем, поэтому я пытаюсь создать простое движение WASD, основанное на движении сверху вниз. У меня есть 5 состояний анимации для движения вперед, назад, влево и вправо, а анимация в режиме ожидания - это просто статический c спрайт. По какой-то причине, когда я тестирую игру, я могу переместиться только на одну единицу расстояния по сетке, и персонаж возвращается в исходную точку. Есть ли способ исправить это? Большое спасибо!
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
private float speed = 6.5f;
Vector3 pos;
public float Speed { get => speed; set => speed = value; }
void Update()
{
pos = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0.0f);
animator.SetFloat("Horizontal_f", pos.x);
animator.SetFloat("Vertical_f", pos.y);
if (Input.GetKey("w")) {
pos.y += Speed * Time.deltaTime;
}
else if (Input.GetKey("s")) {
pos.y -= Speed * Time.deltaTime;
}
else if (Input.GetKey("d")) {
pos.x += Speed * Time.deltaTime;
}
else if (Input.GetKey("a")) {
pos.x -= Speed * Time.deltaTime;
}
transform.position = pos;
}
}
Вот аниматор: аниматор
blend tree