碰撞时播放随机声音片段(Unity)

时间:2015-05-17 15:46:47

标签: c# audio random unity3d collision

我有4个声音文件是我想让玩家在与地面碰撞时发出的着陆噪音,此刻没有声音播放。 C#和编程新手需要一些帮助。

PHAsset

3 个答案:

答案 0 :(得分:1)

在这里交配

说明: 1 - 将此附加到任何游戏对象 2 - 将带有AudioSource组件的gameobject放置到mySource 3 - 假设您有3个要使用的音频剪辑,请将“范围扫描”和“我的音频元素”都设置为3 4 - 将3个剪辑添加为元素 5 - 启用调试以获取控制台上的剪辑列表,但它们也会在您玩游戏时显示在编辑器上

提示:这是启用,因此每次启用此对象时,它将运行一个新的范围并分配剪辑,希望它帮我花了大约5分钟,如果这有助于你请考虑关注我的facebook开发组{{3 }}

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 ();
    }
}

答案 1 :(得分:0)

如果您在添加[RequireComponent(typeof(AudioSource))]行之前已将脚本附加到GameObject,则很可能没有GameObject的Audio Source组件(请检查您的Inspector)。如果是这种情况,您可以:

  • 在检查器中手动添加音频源组件,或
  • 删除然后将脚本重新附加到GameObject,GameObject将自动添加音频源组件。如果您正在为音频文件使用公共AudioClip变量(OP不是),请记住再次将声音资源拖放到脚本的公共变量中(通过脚本重新附加清除它)。 / LI>

答案 2 :(得分:-2)

Audio.PlayOneShot(AudioClip[UnityEngine.Random.Range(0,AudioClip.Length)], 0.8f);