В процессе изучения Game Development я решил сделать собственную игру. Однако, когда я помещал свои анимации на модель через вкладку «Аниматор», я наткнулся на проблему.
Я создал параметр типа «float» в аниматоре, где, если скорость больше или меньше значения x, он воспроизводит определенную анимацию. Однако, чтобы определить скорость ходьбы / бега, я использую поле, которое находится на вкладке «Инспектор».
Проблема в том, что, поскольку инициализированная скорость всегда отличается от 0, аниматор использует это вставленное значение и воспроизводит анимацию ходьбы, несмотря на то, что ни одна клавиша не нажата!
Я уже пробовал различные вещи, которые я нашел в Интернете, например, с помощью флажка «Параметр» на анимации или с использованием различных строк кода, таких как «animator.SetFloat (« Скорость », (скорость));» по моему сценарию, но ничего из этого не сработало.
// Update is called once per frame
void Update()
{
//animator.SetFloat("Speed", Mathf.Abs(speed));
animator.SetFloat("Speed", (speed));
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 moveDirection = new Vector3(horizontal, 0f, vertical) * speed * Time.deltaTime;
transform.Translate(moveDirection);
Я ожидаю, что результат будет следующим:
когда ни одна клавиша не нажата, анимация простаивает для воспроизведения.
при нажатии клавиш WASD, анимация ходьбы, чтобы играть.
при нажатии клавиш Shift + WASD запускается анимация для воспроизведения.