球进入扳机时音频不播放

时间:2016-12-25 11:47:23

标签: c# unity3d unity5

我有一个像Rooltheball在团结教程中的游戏,我想在我的球击中高峰时发出声音,事情是我已经尝试了一切,我基本上在我的mainCamera中添加了一个audioListener,并添加了一个audioSource和游戏对象中的audioClip我想检测触发器,这里是我做的代码:

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class colisaoPicos : MonoBehaviour {



Manager gameManager;
    public AudioClip impact;
    private AudioSource audio;


    void Start()
    {
        gameManager = GameObject.Find ("GameController").GetComponent<Manager> ();
    }

    void OnTriggerEnter(Collider c)
    {
        if (c.gameObject.tag == "Player") {
            AudioSource.PlayClipAtPoint (impact, transform.position);
            gameManager.LifeDown();
        }
    }
}

3 个答案:

答案 0 :(得分:0)

一种解决方案是在球上添加音频源,并在每次进入触发器时播放剪辑。

只需将音频变量公开,然后在检查器中将AudioSource拖入其中。

其次,但在我的书中,更丑陋的解决方案是为此专门制作一个游戏对象。然后将游戏对象放在现场,播放声音。

但是,正如程序员所说,你应该检查触发器。请记住,其中一个游戏对象必须包含一个Rigidbody。 (运动可以是活跃的)

答案 1 :(得分:0)

根据我的经验,以下代码始终有效:

public AudioSource soundToPlay;

void OnTriggerEnter(Collider c)
{
    if (c.gameObject.tag == "Player") {
        soundToPlay.Play ();
    }
}

请勿尝试使用playOneShot或播放剪辑。发生错误。

答案 2 :(得分:0)

尝试此操作,如果您的Trigger功能正常工作,它将播放一次声音,并添加AudioListener游戏对象的trigger组件。

 using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class colisaoPicos : MonoBehaviour {



Manager gameManager;
    public AudioClip impact;
    private AudioSource audio;

void Start()
{
audio=GetComponent<AudioSource>();
    gameManager = GameObject.Find ("GameController").GetComponent<Manager();
}

void OnTriggerEnter(Collider c)
{
    if (c.gameObject.tag == "Player") {


audio.PlayOneShoot(impact);
        gameManager.LifeDown();
    }
}

}