【发布时间】:2015-07-29 02:33:57
【问题描述】:
我有 4 个声音文件是我希望玩家在与地面碰撞时发出的着陆噪音,目前没有声音播放。刚接触 C# 和编程需要一些帮助。
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? -
可能还会仔细检查
Resources/Sound文件夹中的声音资源。为了确保这一点,您可以将每个剪辑拖放到检查器的列表中,而不是将它们加载到Start()。 -
你确定碰撞处理程序被调用了吗?尝试在那里输出一些东西。如果可行,则尝试将“PlayOnShot”放在 Start 方法的末尾,看看是否播放声音只是为了消除任何其他变量。让我们知道结果是什么。
标签: c# audio random unity3d collision