[英]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.