1

我需要根据速度改变我的汽车音高。目前我正在使用答案的解决方案: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 Ie 而改变 - currentSpeed/topSpeed所以当我现在speed = topSpeedpitch意愿是1,这是一个很好的方法但是在我的情况下它会播放声音但是当我的车到达topSpeed它时它会停止播放声音而不是再播放它即使我刹车并从零速开始

由于我是初学者中级,我认为这是因为我的汽车刚体是运动学的,但我不知道正确的原因和任何解决方案。

4

1 回答 1

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);
 }
 
于 2021-06-17T13:52:12.297 回答