我需要根据速度改变汽车的音高。 当前,我正在使用以下答案的解决方案: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
时,它就会停止播放声音,并且即使我刹车并从零速开始也不会再播放声音
由于我是初学者,所以我认为这是因为我的汽车刚体具有运动学特性,但我不知道正确的原因以及对此的任何解决方案。
答案 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);
}