我有一个像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();
}
}
}
答案 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();
}
}
}