Установите поплавок аниматора в соответствии со скоростью горизонтального перемещения объекта
Привет, я сейчас делаю очень простую трехмерную бесконечную игру раннер и пытаюсь увеличить плавание аниматора при увеличении скорости персонажа. Я использую очень простой код для перемещения персонажа:
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--;}
}