我正在做一个游戏,玩家必须把石头推到相应的按钮/压板上。我在原型的硬代码中使用了布尔值,但发现自己在布尔值之间应该使用什么标点符号方面遇到了困难?&&,和||没有用。
谢谢你愿意帮忙。
请忽略这些混乱,我需要帮助的是'if'语句中的底部public void OpenDoor,trigger_1和trigger_2之间的那个(用什么来替换逗号)。任何改进代码的建议也很感激。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TriggerAllButtons : UsedOnceFieldButton
{
bool trigger_1 = false;
bool trigger_2 = false;
//bool trigger_3 = false;
//bool trigger_4 = false;
//bool trigger_5 = false;
//bool trigger_6 = false;
public string button_1 = "Button 1";
public string button_2 = "Button 2";
//public string button_3 = "Button 3";
//public string button_4 = "Button 4";
//public string button_5 = "Button 5";
//public string button_6 = "Button 6";
public string boulder_1 = "Boulder 1";
public string boulder_2 = "Boulder 2";
//public string boulder_3 = "Boulder 3";
//public string boulder_4 = "Boulder 4";
//public string boulder_5 = "Boulder 5";
//public string boulder_6 = "Boulder 6";
public void OnTriggerEnter(Collider other)
{
if (other.CompareTag(button_1) && other.CompareTag(boulder_1))
{
trigger_1 = true;
}
if (other.CompareTag(button_2) && other.CompareTag(boulder_2))
{
trigger_2 = true;
}
// if (other.CompareTag(button_3) && other.CompareTag(boulder_3))
// {
// trigger_3 = true;
// }
// if (other.CompareTag(button_4) && other.CompareTag(boulder_4))
// {
// trigger_4 = true;
// }
// if (other.CompareTag(button_5) && other.CompareTag(boulder_5))
// {
// trigger_5 = true;
// }
// if (other.CompareTag(button_6) && other.CompareTag(boulder_6))
// {
// trigger_6 = true;
// }
}
public void OpenDoor()
{
if (trigger_1 = true, trigger_2 = true) //&& (trigger_3 = true) && (trigger_4 = true) && (trigger_5 = true) && (trigger_6 = true))
{
UsedButton();
}
}
}
2条答案
按热度按时间gab6jxml1#
您混淆了赋值运算符
=
和比较运算符==
。这就是您认为布尔运算符&&
和||
不起作用的原因。同样的逻辑也适用于其他布尔运算符(如
||
)。在错误的if语句中,您意外地更改了bool
的值。写if (trigger_1 && trigger_2)
就足够了,反正它们是bool
。kq0g1dla2#
据我所知,你需要用适当的操作符替换开门的逗号,有两个常用的操作符或||,AND &&与OR运算符如果只有一个布尔值为真,条件将返回真,它只返回假时,两个布尔值都为假与运算符两个布尔值都需要为真在其他条件返回真。