在碰撞(Unity)上播放随机声音剪辑
本文关键字:随机 声音 播放 碰撞 Unity | 更新日期: 2023-09-27 17:49:24
我有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);
}
}
}
Here Mate
指令:1 -将其附加到任何游戏对象上2 -将带有AudioSource组件的游戏对象放到mySource中3 -假设你有3个音频剪辑你想使用,设置范围扫描和我的音频元素为34 -添加3个剪辑作为元素5 -启用调试以获得控制台上的剪辑列表,但当你玩游戏时,它们也会显示在编辑器上
提示:这是启用的,所以每次这个对象是启用的,它会运行一个新的范围和分配剪辑,希望它花了我大约5分钟,如果这有助于你考虑关注我的facebook开发组这里using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class randomSound : MonoBehaviour {
public AudioSource mySource;
public int rangeScan;
public AudioClip[] myAudio;
public int toPlay;
public bool debugging;
void OnEnable () {
toPlay = Random.Range(0,rangeScan);
if (debugging) {
foreach (AudioClip value in myAudio) {
print (value);
}
}
mySource.PlayOneShot(myAudio[toPlay], 0.9F);
mySource.Play ();
}
}
如果你在添加[RequireComponent(typeof(AudioSource))]
行之前将脚本附加到GameObject上,你很可能没有为GameObject添加音频源组件(检查你的检查器)。如果是这种情况,您可以:
- 在检查器中手动添加音频源组件,或者
- 删除然后重新将脚本附加到GameObject,这将自动添加Audio Source组件。如果你正在使用一个公共的
AudioClip
变量为你的音频文件(OP不是),记得再次拖放声音资源到脚本的公共变量(它清除与脚本重新附件)。
Audio.PlayOneShot(AudioClip[UnityEngine.Random.Range(0,AudioClip.Length)], 0.8f);