簡體   English   中英

如何在碰撞時播放音頻剪輯?

[英]How do you play an audio clip on a collision?

當我的播放器與特定障礙物發生碰撞時,我正在嘗試播放聲音片段。 我在障礙物上創建了一個 AudioSource,並編寫了這個腳本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(AudioSource))]
 public class sound : MonoBehaviour {


    AudioSource audioSource;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();

    }

    void OnCollisionEnter(Collision col)  
    {
    if (col.gameObject.CompareTag("Player"))
        Debug.Log("hit");

        GetComponent<AudioSource>().Play();

    }

}

我給玩家一個標簽“玩家”,但是當他們發生碰撞時,即使他們都有一個 2Dcollider 組件,碰撞也沒有注冊。 沒有聲音,也沒有在我寫來檢查的 debug.log 語句中說“命中”。

我查看了 Unity 文檔,但沒有發現我做錯了什么 - 我錯過了什么?

在具有 2D 組件的 2D 環境中工作時,您需要使用 2D 結尾才能使某些功能正常工作。 在你的情況下,你使用

void OnCollisionEnter(Collision c)

但是你需要使用

void OnCollisionEnter2D(Collission2D c)

文檔: https : //docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html

此外,您還可以使用 audioSource.Play(),因為您已經將變量設置為 Start() 中的組件。 而不是 GetComponent().Play();

如果是 3D,

void OnTriggerEnter(Collider other){
  if(other.tag == "Player"){

          this.GetComponent<AudioSource>().Play();
          Debug.Log("PLayed Sound!");

  }
}

簡單的。 無論你做什么,祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM