Звук автомобиля по скорости?
Мне нужно, чтобы высота звука в моей машине менялась в зависимости от скорости. В настоящее время я использую решение ответа: 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);
}