По какой-то причине коллайдеры сталкиваются, и я могу летать - PullRequest
1 голос
/ 22 декабря 2019

Я делаю небольшой прототип игры Unity 2D. У меня есть 2 коллайдера для моего персонажа. Это помогает мне, потому что я хочу, чтобы мой персонаж мог прыгать со стены. Это означает, что когда я сталкиваюсь со стеной, мой сценарий обнаружения коллайдера предполагает, что я поражаю 2 коллайдера, и помогает мне настраивать анимацию.

     //on the ground, change y position as necessary, and if you are pressing up, held = true
     if (InAirDetection.AirDetect == 1)
     {

         position.y += MoveUnitsPerSecond * verticalInput * Time.deltaTime;
         if (Input.GetButton("Vertical") == true)
         {
             held = true;
         }
         position.y += MoveUnitsPerSecond * verticalInput * Time.deltaTime;
     }

     //on the wall, change y position as neccessary, and if you are pressing up, held = true
     if (InAirDetection.AirDetect == 2)
     {

         position.y += MoveUnitsPerSecond * verticalInput * Time.deltaTime;
         if (Input.GetButton("Vertical") == true)
         {
             held = true;
         }
     }


     //in the air, if held is true, change y. If you aren't pressing up, held is false.
     if (InAirDetection.AirDetect == 0)
     {
         if (held == true)
         {
             position.y += MoveUnitsPerSecond * verticalInput * Time.deltaTime;
         }
         if (Input.GetButton("Vertical") == false)
         {
             held = false;
         }
     }

 }
 // apply the transformations
 transform.position = position;

Это часть моего кода. Я попытался сделать так, чтобы, если бы я отпустил воздух и нажал его снова, ничего бы не случилось. Это работает, но есть небольшая проблема ...

При ударе одного коллайдера (головы) о другой коллайдер (потолок), голова входит в тело коллайдера. Это заставляет обнаружение коллайдера думать, что всегда есть касание одного коллайдера, и что я держусь. Это означает, что я могу прыгнуть примерно в 5 раз больше предполагаемой высоты. Другим побочным эффектом является то, что иногда кажется, что сила действует на одну сторону объекта, как ветер. Это не всегда происходит.

Как я могу полностью устранить ошибку? Мой единственный вариант, чтобы у персонажа был 1 коллайдер?

...