Прыжок на фиксированную высоту одним касанием: Unity 2D - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь сделать копию стека-прыжка для обучения. Я пытаюсь заставить моего игрока прыгать на фиксированную высоту, но с кодом ниже, он всегда прыгает на разной высоте. Если я касаюсь долго, то он прыгает высоко, а если я касаюсь и отпускаю релиз немедленно, он прыгает очень низко. Я хочу, чтобы мой игрок прыгал с постоянной высоты для длинного или короткого касания. Я только начал изучать единство. Пожалуйста, помогите!

Вот мой код -

 Touch touch;
 if (Input.touchCount > 0)
 {
     touch = Input.GetTouch(0);
     if ((touch.phase == TouchPhase.Began) && isGrounded)
     {
          //rb.velocity = Vector2.up * jumpForce;
         rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
         isGrounded = false;
     }
     if (touch.phase == TouchPhase.Ended)
     {
         //rb.velocity = Vector2.down * jumpForce;
         rb.AddForce(Vector2.down * jumpForce, ForceMode2D.Impulse);
         isGrounded = true;
     }
   }

1 Ответ

0 голосов
/ 09 января 2019

Я выполнил точно такую ​​же задачу, когда изучал Unity. Итак, вам нужно добавить компонент Rigitbody2D к игровому объекту

private Rigidbody2D body;
private float jumpForce = 12.0f;


void Start()
{
   body = GetComponent<Rigidbody2D>();

}

void Update()
{
   bool grounded = false;
   // set to true when your gameObject is on the ground
   // Assume Space button is for jump
   if(grounded && Input.GetKeyDown(KeyCode.Space))
   {
       body.AddForce(Vector2.up*jumpForce, ForceMode2D.Impulse);
   } 
}

Итак, идея в том, что вы прыгаете, когда находитесь на земле (вы можете использовать Physics2D.OverlapArea для обнаружения столкновения с землей), вы можете контролировать, насколько высоко вы хотите прыгнуть, и вы делаете это с помощью AddForce.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...