C# Unity使用bool参数打开/关闭门

C# Unity使用bool参数打开/关闭门,c#,unity3d,C#,Unity3d,我是Unity的新手,我正在创建一些项目。我已经制作了打开和关闭动画,禁用了循环时间,创建了布尔参数“打开”,并设置了条件: Empty -> openDoor (open = true) openDoor -> closeDoor (open = false) closeDoor -> openDoor (open = true) 用鼠标左键我必须打开和关闭门。这是C#代码,我尝试过使用if状态,但无法正常工作。有什么帮助吗 void Update() { if (

我是Unity的新手,我正在创建一些项目。我已经制作了打开和关闭动画,禁用了循环时间,创建了布尔参数“打开”,并设置了条件:

Empty -> openDoor (open = true)
openDoor -> closeDoor (open = false)
closeDoor -> openDoor (open = true)
用鼠标左键我必须打开和关闭门。这是C#代码,我尝试过使用if状态,但无法正常工作。有什么帮助吗

void Update()
{
    if (Input.GetMouseButton(0))
    {
        anim.SetBool("open", true);

        if (anim.GetBool("open") == true)
        {
            anim.SetBool("open", false);
        }
    }
}

如果您的意思是要通过单击来更改门状态,您可以如下所示取消(
而不是
)门状态:

void Update()
{
   if (Input.GetMouseButton(0))
   {
      anim.SetBool("open", !(anim.GetBool("open")));

   }
}
如果您需要通过单击门来关闭/打开门,您可以使用
OnMouseDown
方法:

 void OnMouseDown(){
  anim.SetBool("open", !(anim.GetBool("open")));
 }   

您将“打开”设置为true。在您检查“打开”是否为真后立即。当然是的,因为你只是把它设为真的,记得吗?因此,由于您已将“open”设置为“true”,因此
if
语句会显示“是的!”。确保“open”为true”,您的代码会立即将“open”设置为false。所有这些都发生在几分之一毫秒之内,这场相当快的网球比赛的实际结果是“开放”被设置(或保持为“假”……哦,我明白了。老实说,我是想让它工作。我的错。“你可以
而不是
”我想说“你可以否定”就不那么令人费解了。当然你可以
而不是
。很少有不能
的情况。明白我的意思吗?当然是我的意见。还有
不是
意思是批评你的答案;-)@MehrdadDowlatabadi现在有一个问题:当我点击屏幕上的任何地方时,门就会打开。这是collider的一个问题,或者我应该添加onMouse函数吗?我更新了答案,另一种方法是使用raycast查看这里: