汽车的声音相对于速度?

时间:2019-01-20 08:04:00

标签: c# android unity3d audio soundeffect

我需要根据速度改变汽车的音高。 当前,我正在使用以下答案的解决方案: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;
}

因此,起始pitch0 它根据我的currentSpeed而变化 即-currentSpeed / topSpeed,所以当我当前的speed = topSpeedpitch将是1,这是个好方法 但就我而言,它会播放声音,但是一旦我的汽车到达topSpeed时,它就会停止播放声音,并且即使我刹车并从零速开始也不会再播放声音

由于我是初学者,所以我认为这是因为我的汽车刚体具有运动学特性,但我不知道正确的原因以及对此的任何解决方案。

1 个答案:

答案 0 :(得分:0)

我知道现在回答已经太晚了。但也许它对其他有同样问题的人有所帮助。

这是你可以用一种声音做的最简单的方法,

将此输入到车辆控制器脚本

 //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);
 }