当我的角色在NPC的碰撞体中并按下按钮时尝试切换摄像机



我目前正在尝试编写一个游戏,其中相机在与 NPC 交谈时会切换,但是当我在碰撞器中按下键时它似乎不起作用,但是如果我删除 GetButtonDown if 语句就可以了。

public class NPCInteraction : MonoBehaviour {
[SerializeField]
Camera MainCamera;
void Start()
{
MainCamera.GetComponent<Camera>().enabled = true;
}

void OnTriggerEnter(Collider other) {
if (other.gameObject.tag == ("NPC"))
{
if (Input.GetButtonDown("Interact"))
{
MainCamera.GetComponent<Camera>().enabled = false;
other.GetComponentInChildren<Camera>().enabled = true;
}
}
}    
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == ("NPC"))
{
MainCamera.GetComponent<Camera>().enabled = true;
other.GetComponentInChildren<Camera>().enabled = false;
}
}
}

这是因为Input.GetButtonDown只返回用户按下按钮的帧。因此,如果这也是OnTriggerEnter发生的同一帧,那将是相当幸运的。

请改用Input.GetButton

按住由按钮名称标识的虚拟按钮时返回 true。

https://docs.unity3d.com/ScriptReference/Input.GetButton.html

编辑(来自评论(

上述解决方案仅在初始碰撞时按下键时才有效,要在之后按下键(仍在触发器内(使其工作,请使用OnTriggerStay而不是OnTriggerEnter

OnTriggerEnter/OnTriggerExit进行布尔切换并检查输入Update

最新更新