我不知道为什么一进入播放模式自动播放开门的音频我不希望它触发,因为我只在与物体碰撞时进入播放模式。请帮忙
我认为这与我的代码有关,或者我已经在编辑器中检查了各种选项,但似乎不符合问题 这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpenFirst : MonoBehaviour
{
public GameObject theDoor;
public AudioSource doorFX;
void OnTriggerEnter(Collider other)
{
doorFX.Play();
theDoor.GetComponent<Animation>().Play("DoorOpen");
}
void OnTriggerExit(Collider other)
{
doorFX.Play();
theDoor.GetComponent<Animation>().Play("DoorClose");
}
}
欢迎来到 Stack Overflow,Aviral Agarwal!我很乐意帮助你。
进入播放模式后自动播放开门音频的原因是脚本加载后立即触发
OnTriggerEnter
方法,而不仅仅是当玩家与物体碰撞时。要解决此问题,您可以添加一个布尔标志以检查播放器在播放音频之前是否与对象发生碰撞。
可以修改代码如下:
using System. Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpenFirst : MonoBehaviour
{
public GameObject the Door;
public AudioSource doorFX;
private bool hasCollided = false;
void OnTriggerEnter(Collider other)
{
if (!hasCollided)
{
doorFX. Play();
theDoor.GetComponent<Animation>().Play("DoorOpen");
hasCollided = true;
}
}
void OnTriggerExit(Collider other)
{
doorFX. Play();
theDoor.GetComponent<Animation>().Play("DoorClose");
}
}
上面的代码添加了
hasCollided
标志,在播放音频前先判断是否为false
,只有玩家第一次与物体碰撞时才播放开门音频