当 2 个不同的玩家对象同时位于门的触发器内时,如何更改场景?
How can I change scenes when 2 different player objects are inside a door's trigger at the same time?
有些玩家游戏对象必须具有不同的标签:"Player1" 和 "Player2"。有一个门游戏对象,如果两个玩家都在门的触发器内,场景将会改变。
你可以有 2 个布尔值,每个玩家一个,进入门触发器时变为真,退出时变为假。
然后在脚本的 Update() 中,有一个 if 语句,当两个布尔值都为真时执行 SceneManager 函数。
希望我回答了你的问题,这是我制作的脚本并测试了你的情况:
public class DoorController : MonoBehaviour {
bool p1IsTouching = false;
bool p2IsTouching = false;
void Update() {
if (p1IsTouching && p2IsTouching) {
//do SceneManager stuff
}
}
void OnTriggerEnter2D(Collider2D other) {
if (other.gameObject.tag == "Player1") { p1IsTouching = true; }
if (other.gameObject.tag == "Player2") { p2IsTouching = true; }
}
void OnTriggerExit2D(Collider2D other) {
if (other.gameObject.tag == "Player1") { p1IsTouching = false; }
if (other.gameObject.tag == "Player2") { p2IsTouching = false; }
}
}
有些玩家游戏对象必须具有不同的标签:"Player1" 和 "Player2"。有一个门游戏对象,如果两个玩家都在门的触发器内,场景将会改变。
你可以有 2 个布尔值,每个玩家一个,进入门触发器时变为真,退出时变为假。
然后在脚本的 Update() 中,有一个 if 语句,当两个布尔值都为真时执行 SceneManager 函数。
希望我回答了你的问题,这是我制作的脚本并测试了你的情况:
public class DoorController : MonoBehaviour {
bool p1IsTouching = false;
bool p2IsTouching = false;
void Update() {
if (p1IsTouching && p2IsTouching) {
//do SceneManager stuff
}
}
void OnTriggerEnter2D(Collider2D other) {
if (other.gameObject.tag == "Player1") { p1IsTouching = true; }
if (other.gameObject.tag == "Player2") { p2IsTouching = true; }
}
void OnTriggerExit2D(Collider2D other) {
if (other.gameObject.tag == "Player1") { p1IsTouching = false; }
if (other.gameObject.tag == "Player2") { p2IsTouching = false; }
}
}