【问题标题】:Audio not playing when ball enters the trigger球进入触发器时音频不播放
【发布时间】:2016-12-28 14:09:35
【问题描述】:

我在 unity 教程中有一个类似 Rooltheball 的游戏,我想在我的球达到顶峰时播放声音,问题是我已经尝试了所有方法,我基本上在我的 mainCamera 中添加了一个 audioListener,并添加了一个 audioSource和我想检测触发器的游戏对象中的音频剪辑,这是我所做的代码:

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

【问题讨论】:

  • colisaoPicos 脚本附加在哪里?你确定OnTriggerEnter 被调用了吗?

标签: c# unity3d unity5


【解决方案1】:

一种解决方案是在球上添加一个音频源,并让它在您每次进入触发器时播放剪辑。

只需公开音频变量,然后在检查器中将 AudioSource 拖入其中。

其次,但在我的书中,更丑陋的解决方案是专门为此目的制作一个游戏对象。然后将游戏对象放在原地,播放声音。

但是,正如程序员所说,您应该检查触发器。请记住,其中一个游戏对象必须包含刚体。 (Kinematic 是否可以激活)

【讨论】:

    【解决方案2】:

    根据我的经验,以下代码始终有效:

    public AudioSource soundToPlay;
    
    void OnTriggerEnter(Collider c)
    {
        if (c.gameObject.tag == "Player") {
            soundToPlay.Play ();
        }
    }
    

    不要尝试使用 playOneShot 或播放剪辑。发生错误。

    【讨论】:

      【解决方案3】:

      试试这个,如果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();
          }
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-23
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多