Установите поплавок аниматора в соответствии со скоростью горизонтального перемещения объекта

Привет, я сейчас делаю очень простую трехмерную бесконечную игру раннер и пытаюсь увеличить плавание аниматора при увеличении скорости персонажа. Я использую очень простой код для перемещения персонажа:

void Update () { transform.Translate(Vector3.forward*speed);

Тогда я устал, чтобы соответствовать плаванию аниматора как это:

m_Anim.SetFloat("H_Speed", m_Rigidbody.velocity.z);

m_Anim ссылается на Animator, а m_Rigidbody ссылается на объекты Rigidbody.

2 ответа

Transform.Translate не влияет на скорость твердого тела. Это как телепортация. Так что если вы хотите придерживаться использования Translate Вы должны установить скорость анимации в соответствии с speed из этой строки:

transform.Translate(Vector3.forward*speed);

У меня нет репутации, чтобы добавить комментарий для разъяснения вашей проблемы (например, зачем вам нужно устанавливать поплавок в Animator?), Но вот мой ответ. Скорость в вашем переводчике будет фиксированной, поэтому она останется неизменной, если у вас нет кода, который ее меняет. Например, увеличение его при нажатии стрелки вверх и вниз при нажатии стрелки вниз.

void Update () {
   transform.Translate(Vector3.forward*speed*Time.deltaTime);
   m_Anim.SetFloat("H_Speed", speed);
   if (Input.GetKeyDown(KeyCode.UpArrow)){ 
       speed++;}
   if (Input.GetKeyDown(KeyCode.DownArrow)){ 
       speed--;}
}
Другие вопросы по тегам