Unity Открывает / закрывает двери с помощью параметров bool

#c# #unity3d

#c# #unity-игровой движок

Вопрос:

Я новичок в Unity и создаю какой-то проект. Я уже создал анимацию открытия и закрытия, отключил время цикла, создал параметр bool «open» и поставил условия:

 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);
        }
    }
}
  

Комментарии:

1. Вы устанавливаете для «open» значение true. Сразу после того, как вы проверите, верно ли значение «open». Конечно, это так, потому что вы только что установили для него значение true, помните? Итак, поскольку вы установили для «open» значение «true», в if заявлении говорится » Да!. Убедитесь, что значение «open» равно true «, и ваш код немедленно установит значение «open» в false. Все это происходит в течение доли миллисекунды, и практическим результатом этого довольно быстрого теннисного матча является то, что значение «открыто» устанавливается (или поддерживается как) «false»…

2. О, я понимаю. Ну, честно говоря, я пытался заставить это работать. Моя ошибка.

Ответ №1:

Если вы имеете в виду, что хотите изменить статус двери щелчком мыши, вы можете отменить ( not ) bool следующим образом:

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

   }
}
  

и если вам нужно закрыть / открыть дверь, нажав на нее, вы можете использовать OnMouseDown метод:

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

Комментарии:

1. » вы можете not «, я думаю, менее умопомрачительно говорить «вы можете отрицать». Конечно, вы можете not . Редко бывают ситуации, когда вы не можете not . Понимаете, что я имею в виду? Конечно, это просто мое мнение. А также not имел в виду критиковать ваш ответ 😉

2. @MehrdadDowlatabadi Теперь возникает такая проблема: когда я нажимаю в любом месте экрана, дверь открывается. Это проблема с collider или мне следует добавить функцию OnMouse?

3. я обновил ответ, другой способ — использовать raycast, смотрите здесь: answers.unity.com/questions/332085 /…