キーを押してから徐々にボリュームを上げていく方法がわかりません


KeyCode.Wを押してから徐々にAudioSource.volumeを `3f` まで上げて行きたいのですが  
現状のコードではフリーズしてしまいます。

どのようにすればよいでしょうか？

[code]

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerManager : MonoBehaviour
    {
        private AudioSource audioSource;
        private float volumeWhile = 3f;
      
        void Start()
        {
      
            audioSource = GetComponent<AudioSource>();
        }
        // Update is called once per frame
        void Update()
        {   
            if (Input.GetKey(KeyCode.W))
            {
                if (!audioSource.isPlaying)
                {
                    while (audioSource.volume < volumeWhile)
                    {
                        audioSource.Play();
                        audioSource.volume += 0.5f;
    
                        if (audioSource.volume == volumeWhile) break;
                    }
                }
            }
            if (Input.GetKeyUp(KeyCode.W))
                {
                audioSource.Stop();
            }
        }
    }
    
[/code]




`while` 文が `break` する条件で「目標の値になったら」ということで `==` での比較を行っていますが、浮動小数点同士の比較なので演算
(ここではインクリメント) をしていく過程で **誤差** が発生している可能性があります。

代わりに「目標の値を超えたら」にしてみると良いかもしれません。

[code]

    if (audioSource.volume >= volumeWhile) break;
    
[/code]

