C#-统一-两个对象碰撞时的音频,不工作:(
我遇到了一个问题。我正在创建一个小游戏项目,其中一个球从鬼魂中逃脱 我正试图写一个剧本,当球与鬼魂相撞时播放“邪恶的笑声” 当我将音频碰撞代码添加到脚本中时,另一个让玩家进入“游戏结束”场景的功能停止工作 有人知道问题出在哪里吗?C#-统一-两个对象碰撞时的音频,不工作:(,c#,unity3d,C#,Unity3d,我遇到了一个问题。我正在创建一个小游戏项目,其中一个球从鬼魂中逃脱 我正试图写一个剧本,当球与鬼魂相撞时播放“邪恶的笑声” 当我将音频碰撞代码添加到脚本中时,另一个让玩家进入“游戏结束”场景的功能停止工作 有人知道问题出在哪里吗? 提前感谢!(下面的代码)这是因为只要您调用SceneManager.LoadScene当前场景(包含您的播放器、AI和音频源)就会丢失并替换为新场景。向场景加载添加延迟应该可以做到这一点,您可以使用它(或者如果您更高级) 谢谢,伙计!那应该会有帮助的!很高兴能帮上忙。
提前感谢!(下面的代码)这是因为只要您调用
SceneManager.LoadScene
当前场景(包含您的播放器、AI和音频源)就会丢失并替换为新场景。向场景加载添加延迟应该可以做到这一点,您可以使用它(或者如果您更高级)
谢谢,伙计!那应该会有帮助的!很高兴能帮上忙。
public class GhostScript : MonoBehaviour
public AudioSource ghostCollision; //this is the collision sound reference
public GameObject target; //this is the player or a reference for him
UnityEngine.AI.NavMeshAgent agent;
// Start is called before the first frame update
void Start()
{
ghostCollision = GetComponent<AudioSource>();
agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
if (target == null) {
target = GameObject.FindGameObjectWithTag("Player");
}
}
// Update is called once per frame
void Update()
{
agent.destination = target.transform.position;
}
public void OnCollisionEnter(Collision collision){
if (collision.gameObject.tag == "Player"){
ghostCollision.Play();
SceneManager.LoadScene("menu");
}
}
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Player")
{
ghostCollision.Play();
// Invokes the function after the AudioClip is over
Invoke("LoadScene", ghostCollision.clip.length);
}
}
private void LoadScene()
{
SceneManager.LoadScene("your-scene-name");
}