2017-06-27 13 views
1

私は最初の簡単なゲームのためにいくつかのチュートリアルを混乱させました。スクリプトからオーディオソースを再生

私は私のキャラクターとして使用する私のGameObjectの下に2つのオーディオソースを持っています。彼らはどちらも「目を覚まして遊ぶ」を介してプレイします。スクリプトからの再生は1つだけです。もう1つは、スクリプトから呼び出されたときに全く発音しないか、または数回クリックするだけです。私はスクリプト

を書くために、最新のVisual Studioを使用してい

はここで正しく動作していない私のスクリプトの一部だ(私は選手の動きスクリプトの多くを残しています)。ライン7に

オーディオ変数、ここでライン上のオーディオ再生33

using UnityEngine; 

public class PlayerMovement : MonoBehaviour 
{ 

public Rigidbody rb; 

public AudioSource AudioFall; 

public GameObject Fall; 



if(rb.position.y < -1f) 
{ 
AudioFall.Play(); 
Fall.SetActive(true); 
FindObjectOfType<GameManager>().GameOver(); 
} 

はライン17

のオーディオ再生、ライン7に

オーディオ変数が動作している別の.cs部分であります

using UnityEngine; 

public class playerCollision : MonoBehaviour 
{ 
public PlayerMovement movement; 

public AudioSource AudioCrash; 

public GameObject Crash; 

void OnCollisionEnter(Collision collisionInfo) 
{ 
    if (collisionInfo.collider.tag == "Obstacle") 
    { 
     FindObjectOfType<PlayerMovement>().rb.isKinematic = true; 
     movement.enabled = false; 
     AudioCrash.Play(); 
     Crash.SetActive(true); 
     FindObjectOfType<GameManager>().GameOver(); 
    } 

} 

私は、オーディオソースインスペクタで最大距離を増やそうとしました。

+0

'if(rb.position.y <-1f)'の中に 'Debug.Log'を入れて、その条件が真であるかどうかを確認し、呼び出された回数を確認する必要があります。 – Programmer

+0

@Programmerありがとう!だから私はこれを試みた(rb.position.y <-1f) { Debug.Log(AudioFall.time); AudioFall.Play(); Fall.SetActive(true); FindObjectOfType ().GameOver(); } –

+0

ゲームオブジェクトを実行した後の結果は、コンソールの[UnityEngine.Debug:Log(Object)0、UnityEngine.Debug:Log(Object)0.021、UnityEngine.Debug:Logオブジェクト)0、UnityEngine.Debug:Log(オブジェクト)0、UnityEngine.Debug:Log(オブジェクト)0] –

答えて

1

あなたはこれらの3つのことを確認する必要があります:

.ITはif(rb.position.y < -1f)Debug.Logが複数回呼び出されているためtrueている間、あなたのオーディオは、各フレームを再生されているように見えます。それはそれを再生する前に再生されている場合は、単にチェック:

if(rb.position.y < -1f) 
{ 
    //PLAY ONLY IF AUDIO IS NOT PLAYING 
    if (!AudioFall.isPlaying) 
    { 
     AudioFall.Play(); 
    } 
    Fall.SetActive(true); 
    FindObjectOfType<GameManager>().GameOver(); 
} 

それはそうではないのです.IF、オーディオクリップをエディタでAudioFall Audiosourceのクリップスロットに割り当てられていることを確認してください。 Fallゲームオブジェクトは、ゲームオブジェクトとして、同じであれば

.Finally、オーディオは、それが非アクティブに設定されているので、音声は再生されません、その後に取り付けられています。どこにでもアクティブに設定されているかどうかを確認します。無効にしない別の空のGameObjectにAudioFall Audiosourceを添付する必要があります。

+1

それは働いた!本当にありがとう。これは私の問題に行った最初のウェブサイトではありません。 Sooo多くの助け! –

+0

ニース。あなたのゲームで幸運。 – Programmer

+0

あなたが私の質問に気にしないなら、私は統一のウェブページhttps://docs.unity3d.com/ScriptReference/AudioSource-isPlaying.htmlに行きましたが、私は何を見つけることができます!のためですか? –

関連する問題