我正在创建一款游戏需要帮助。我正在使用Unity引擎构建游戏,而且我对C#编码很陌生。我正在创建一个2D游戏,其中玩家控制正方形的颜色,并且必须将其更改为正确的颜色,就像它通过某个彩色对象时一样。玩家改变颜色很好,对象是触发器。当玩家通过触发器时,如果玩家的颜色不正确,玩家就会死亡。嗯,这是完美的,但只有第一个对象下一个对象,无论对象死亡的玩家的颜色。如果我在if语句中已经尝试了,那么如果我似乎无法解决这个问题。非常感谢您的帮助!
以下是播放器的代码
void OnTriggerEnter (Collider other)
{
if (other.transform.tag == "Blue") {
blue = true;
}
else {
blue=false;
}
if (other.transform.tag == "Red") {
red = true;
}
else {
red =false;
}
if (other.transform.tag == "Blue" && GameObject.Find ("Blue").GetComponent<Blue> ().mb == false) {
yield return 0;
Die ();
} else if (other.transform.tag == "Red" && GameObject.Find ("Red").GetComponent<Red> ().mr == false) {
Die ();
}
}
以下是每个不同颜色对象的代码。这个恰好是蓝色的。
void Update () {
if (GameObject.Find ("Player").GetComponent<Movement> ().blue == true && GameObject.Find ("Player").GetComponent<Movement> ().playerBlue == true) {
mb = true;
} else {
mb = false;
}
if (!GameObject.Find("Player").GetComponent<Movement>().blue) {
mb = false;
}
}
答案 0 :(得分:0)
你的执行顺序有点乱,这可能就是为什么它不起作用。尝试让所有逻辑都遵循一条路,而不是两条路。现在,你是:
这就是我们所说的意大利面条代码。一切都扭曲了。你能想出解开它的方法,所以两位逻辑不相互依赖吗?
例如,我在后面的代码块中看到,您正在检查播放器是否为蓝色。当玩家设置blue
(或设置blue=false
)时,您可以改为运行该代码吗?
编辑:我知道这并不是严格回答你的问题,但是解开问题是问题解决过程的第一步。