Звук автомобиля по скорости?

Мне нужно, чтобы высота звука в моей машине менялась в зависимости от скорости. В настоящее время я использую решение ответа: https://answers.unity.com/questions/1067016/car-engine-sound-code-unity5car-engine-sound-code.html

public float topSpeed = 100; // km per hour
private float currentSpeed = 0;
private float pitch = 0;

void Update () 
{
     currentSpeed = transform.GetComponent<Rigidbody>().velocity.magnitude * 3.6f;
     pitch = currentSpeed / topSpeed;

     transform.GetComponent <AudioSource> ().Pitch = pitch;
}

Согласно этому старту pitch является 0 И это меняется в соответствии с моим currentSpeed Т.е. - currentSpeed/topSpeed поэтому, когда мой нынешний speed = topSpeed pitch будет 1 и это хороший подход, но в моем случае это играет звук, но когда однажды моя машина достигает topSpeed он перестает воспроизводить звук, чем, и никогда не проигрывает его снова, даже если я тормозу и начинаю с нулевой скорости

Поскольку я новичок, я думаю, что это из-за того, что мое твердое тело автомобиля кинематическое, но я не знаю правильной причины и какого-либо решения этого.

1 ответ

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

это самый простой способ сделать с одним звуком,

введите это в скрипт контроллера транспортного средства

       //Vehicle's rigidbody
 Rigidbody _rigidBody;
  
 //You have to assign in a sound
 public AudioSource _shipSound;
 float EngineAcceleration = 10f;

 private void Start()
 {
    _rigidBody = GetComponent<Rigidbody>(); 
    _SoundShip.Play();  
 }
 private void Update()
 {
   //simply we divide Rigidbody speed to ourAcceleration
  _SoundShip.pitch = Mathf.Clamp(_rigidBody.velocity.magnitude / 
  EngineAcceleration , 
  minEngineSound, maxEngineSound);
 }
 
Другие вопросы по тегам