Quantcast
Viewing all articles
Browse latest Browse all 8901

コードも合ってるのに音が鳴らない( Unity ) AudioSource.Play();

たまにやらかす奴

オブジェクトを消すときに効果音を鳴らしたい時があると思います

Audio_Play
usingUnityEngine;usingUnityEngine.UI;publicclassAudio_Play:MonoBehaviour{AudioSourceaudio;voidstart(){audio=GetComponent<AudioSource>();}voidOnCollisionEnter(Collisioncollision){audio.Play();Destroy(gameObject);}}

↑のコードでは残念ながら効果音はなりません。
((実際にはなっていますが消えています。))

なぜかというと音を鳴らした瞬間にオブジェクトごと音を破棄しているからです。

対策法をしては音を鳴らす為だけのオブジェクトをインスタンスから生成するか、別のスクリプトにアクセスして鳴らすなどがあります。

今回はインスタンスを生成する方法で解決します。
インスタンスの場合

Audio_Play
usingUnityEngine;usingUnityEngine.UI;publicclassAudio_Play:MonoBehaviour{publicGameObjectAudio_Object;voidOnCollisionEnter(Collisioncollision){Instantiate(Audio_Object,transform.position,transform.rotation);Destroy(gameObject);}}
Audio_Objectにアタッチする奴
usingUnityEngine;usingUnityEngine.UI;publicclassAudio_Play:MonoBehaviour{privateAudioSourceAudio;//AudioSourceを入れるboolisAudioStart=false;//曲再生の判定voidStart(){Audio=GetComponent<AudioSource>();//AudioSourceの取得Audio.Play();//AudioSourceを再生isAudioStart=true;//曲の再生を判定}voidUpdate(){if(!Audio.isPlaying&&isAudioStart)//曲が再生されていない、尚且つ曲の再生が開始されている時{Destroy(gameObject);//オブジェクトを消す}}}

Image may be NSFW.
Clik here to view.
スクリーンショット 2019-11-22 13.45.07.png

※ゲーム開始時に再生を一応外しておくこと


Viewing all articles
Browse latest Browse all 8901

Trending Articles