Unity 5,如果 "if statement" 正确则加载新场景
Unity 5, loading new scene if "if statement" is correct
我是 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");
}
}
}
有问题。我使用了两条调试线来查看这里究竟发生了什么。
第一个是说 "TRIGGER" 当我的车与 Player 相撞时,它工作正常。
但是第二个保持沉默。每辆车都有一个特定的编号 public string carTitle,如果我的车是 98 号并且玩家在汽车和玩家碰撞时按下按钮 F,它应该加载一个新场景。我对吗?但是没有任何反应。
我用的是OnTriggerStay2D,所以现在可以正常使用了。
void OnTriggerStay2D(Collider2D other)
{
if (other.tag == "Player" && Input.GetButtonDown("Use"))
{
if (carTitle == "98")
{
SceneManager.LoadScene("NewScene");
}
}
}
我看到你已经解决了问题,但我想花点时间解释一下为什么它不起作用:
OnTriggerEnter2D 只会在一个循环期间执行,就在对撞机进入触发器时。
Input.GetButtonDown(),只有一个循环,当按键被按下时才为真。
因此,为了满足条件,您应该在输入触发器的同一周期内按下 "F" 键。这当然是非常不切实际的。
如果你想在玩家按下 F 键时改变场景,使用 OnTriggerStay2D 是你正在寻找的回调。
如果你想换场景,只有当你按住F键进入触发器时,你应该使用Input.GetButton()
我是 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");
}
}
}
有问题。我使用了两条调试线来查看这里究竟发生了什么。 第一个是说 "TRIGGER" 当我的车与 Player 相撞时,它工作正常。 但是第二个保持沉默。每辆车都有一个特定的编号 public string carTitle,如果我的车是 98 号并且玩家在汽车和玩家碰撞时按下按钮 F,它应该加载一个新场景。我对吗?但是没有任何反应。
我用的是OnTriggerStay2D,所以现在可以正常使用了。
void OnTriggerStay2D(Collider2D other)
{
if (other.tag == "Player" && Input.GetButtonDown("Use"))
{
if (carTitle == "98")
{
SceneManager.LoadScene("NewScene");
}
}
}
我看到你已经解决了问题,但我想花点时间解释一下为什么它不起作用:
OnTriggerEnter2D 只会在一个循环期间执行,就在对撞机进入触发器时。
Input.GetButtonDown(),只有一个循环,当按键被按下时才为真。
因此,为了满足条件,您应该在输入触发器的同一周期内按下 "F" 键。这当然是非常不切实际的。
如果你想在玩家按下 F 键时改变场景,使用 OnTriggerStay2D 是你正在寻找的回调。
如果你想换场景,只有当你按住F键进入触发器时,你应该使用Input.GetButton()