@8DSm1Le

Как улучшить прыжок?

Добрый день!
Как мне улучшить прыжок? Персонаж всегда прыгает по разному - то сильнее, то слабее. Если подойти к стенке, то прыгнет еще сильнее. Думаю, что это может быть связано с CheckGround.
Еще есть проблема в том, что когда я держу пробел он прыгает высоко, но когда нажал и отпустил, то слабо. Как пофиксить?
Код прыжка:
private void Jump()
    {
        if (Input.GetButton("Jump")) State = States.jump;
        rb.AddForce(transform.up * jumpForce * Time.deltaTime, ForceMode2D.Impulse);
        jumpSound.Play();
    }


Код CheckGround:
private void CheckGround()
    {
        Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, circle);
        isGrounded = collider.Length > 1;
    }
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
@MaxMaksimov
1. Персонаж прыгает по разному потому что у тебя проверка на GetButton, он срабатывает постоянно когда кнопка зажата, то есть прыжок кучу раз вызывается, используй GetButtonDown, тогда прыжок будет один при каждом нажатии на кнопку.
2. Я в целом не рекомендую использовать addforce для прыжков, его трудно контролировать, лучше используй rb.velocity = new Vector2(rb.velocity.x, jumpForce), хотя если исправить все остальное то можешь оставить если так тебе удобно.
3. CheckGround чуть измени, сделай слой Ground, и назначь его объектам пола, и пусть землей будет считаться только объекты соответствующего слоя, так стены и прочее будут игнорироваться, то есть будет так выглядеть метод - Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, circle, layerMask) где layerMask это либо номер слоя просто цифрой написан, либо что лучше - public переменная типа LayerMask, где ты в инспекторе выберешь нужный слой.
4. Вызывай метод в FixedUpdate, но ты код не предоставил, возможно ты это уже делаешь)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы