Я создал скрипт для прыжков со стены, но функция Invoke() не работает

#c# #unity3d

#c# #unity3d

Вопрос:

Здравствуйте, я создал скрипт для перехода через стену, но функция Invoke() не работает, я получаю сообщение об ошибке «Попытка вызвать метод: KarakterKontrol.Не удалось вызвать DuvarZiplamasiniBoz. «

         private void Update()
    {

        if(Input.GetKeyDown(KeyCode.Space) amp;amp; IsSliding == true)
        {
            WallJump = true;
            Invoke("DuvarZiplamasiniBoz", WallJumpTime);
        }

        if(DuvarZiplamasi == true)
        {
            karakterRB.velocity = new Vector2(xWallForce * -input, yWallForce);
        }

        void DuvarZiplamasiniBoz()
        {
            WallJump = false;
        }
  

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

1. Компилируется ли это вообще?

2. Ха, ты только что кое-что мне объяснил. Я никогда не знал, что вы можете создавать локальные методы внутри метода.

3. Почему вы хотите вызвать () метод DuvarZiplamasiniBoz? Вы можете просто вызвать его так, как DuvarZiplamasiniBoz() . Если вы хотите передать параметр WallJumpTime, вы должны объявить это примерно так: DuvarZiplamasiniBoz(<тип WallJumpTime> wallJumpTime) { … Если тип — DateTime, то это будет DuvarZiplamasiniBoz(DateTime wallJumpTime).

Ответ №1:

Поместите void DuvarZiplamasiniBoz вне метода обновления. вот почему вы не можете вызвать метод.

сделайте это так:

      private void Update()
    {

        if(Input.GetKeyDown(KeyCode.Space) amp;amp; IsSliding == true)
        {
            WallJump = true;
            Invoke("DuvarZiplamasiniBoz", WallJumpTime);
        }

        if(DuvarZiplamasi == true)
        {
            karakterRB.velocity = new Vector2(xWallForce * -input, yWallForce);
        }

      }
    private void DuvarZiplamasiniBoz()
     {
          WallJump = false;
     }
  

или используйте сопрограмму, чтобы подождать несколько секунд.