我有4個聲音文件,這是我希望播放器在與地面碰撞時產生的降落噪聲,此時沒有聲音在播放。對於C#和編程新手需要一點幫助。在碰撞時播放隨機聲音片段(Unity)
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class Bhop : MonoBehaviour{
public AudioClip[] list;
AudioSource audio;
CharacterController characterController;
int number;
void Start()
{
audio = GetComponent<AudioSource>();
characterController = GetComponent<CharacterController>();
//Loading the items into the array
list = new AudioClip[]
{
(AudioClip)Resources.Load("Sound/jumplanding1.wav"),
(AudioClip)Resources.Load("Sound/jumplanding2.wav"),
(AudioClip)Resources.Load("Sound/jumplanding3.wav"),
(AudioClip)Resources.Load("Sound/jumplanding4.wav")
};
}
void OnCollisionEnter (Collision col)
{
int number;
number = Random.Range(0, list.Length);
if (col.gameObject.name == "Sound")
{
audio.PlayOneShot(list[number], 0.5f);
}
}
}
如果在碰撞時應該發出聲音調試,是'col.gameObject.name ==「Sound」'等於true? – JRLambert
如果「Resources/Sound」文件夾中的聲音資源可能會重複檢查。爲了確定,你可以將每個剪輯拖放到檢查器的列表中,而不是在'Start()'上加載它們。 – Geri
你確定知道碰撞處理程序被調用嗎?嘗試在那裏輸出。如果這樣做,然後嘗試將「PlayOnShot」放在Start方法的末尾,並查看聲音是否起作用以消除其他變量。讓我們知道結果是什麼。 – Reasurria