我是Unity的新手,所以.. :) 我正在制作2D游戏,我的角色应该按F进入汽车,Unity应该加载一个新的场景。有我的C#代码:
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
//Debug.Log("TRIGGER");
if (carTitle == "98" && Input.GetKeyDown(KeyCode.F))
{
SceneManager.LoadScene("NewScene");
//Debug.Log("TRIGGER 98");
}
}
}
有一个问题。我使用了两条Debug行来查看这里到底发生了什么。 第一个是当我的车与Player碰撞时说“TRIGGER”,它工作正常。 但第二个是保持沉默。每辆车都有一个特定的数字公共字符串carTitle ,如果我的车是98号,当汽车和玩家碰撞时,玩家点击按钮F,它应该加载一个新的场景。我对吗?但没有任何反应。
答案 0 :(得分:1)
我看到你已经解决了这个问题,但是我想花一点时间来解释它为什么不起作用:
OnTriggerEnter2D只会在一个角色中执行,正好在对手进入触发器时。
输入.GetButtonDown()只会在按下按键时为一个循环。
因此,对于要满足的条件,您应该在进入触发器的同一循环中按下“F”键。这当然是极其不切实际的。
如果你想在玩家在触发时按下F来改变场景,使用 OnTriggerStay2D 就是你正在寻找的回调。
如果你想改变场景,只有当你按住F键时输入触发器时,你应该使用 Input.GetButton()
答案 1 :(得分:0)
我使用的是OnTriggerStay2D,所以现在它运行正常。
void OnTriggerStay2D(Collider2D other)
{
if (other.tag == "Player" && Input.GetButtonDown("Use"))
{
if (carTitle == "98")
{
SceneManager.LoadScene("NewScene");
}
}
}