@Shizun

Что делать, если персонаж прыгает от стен?

Всем привет! Столкнулся с такой проблемой: когда персонаж на земле - IsGrounded работает и он может прыгать, но он так же может прыгать, когда соприкасается со стеной (просто прыгает вверх по стене, пока не перестанешь нажимать на пробел). Надо чтобы IsGrounded работал только при соприкосновении с землёй.

public float JumpForce = 1f;
public bool IsGrounded = false;
public float checkGroundOffsetY = -1.8f;
public float checkGroundRadius = 0.3f;


void Jump()
{
    if (IsGrounded && Input.GetKeyDown(KeyCode.Space))
    {
        rb.AddForce(transform.up * JumpForce, ForceMode2D.Impulse);
    }
}

void CheckGround()
{
    Collider2D[] colliders = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y + checkGroundOffsetY), checkGroundRadius);
    if (colliders.Length > 1)
    {
        IsGrounded = true;
    }
    else
    {
        IsGrounded = false;
    }
}

private void FixedUpdate()
{
    CheckGround();
}
private void Update()
{
    Jump()
}
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 2
@NIKROTOS
Начинающий программист.
попробуй проверить землю по тегу, компоненту или ещё чему-нибудь, чем ты можешь её отличить от стенки. Проверка должна быть во время прыжка.
Ответ написан
Комментировать
LittleBob
@LittleBob
https://youtu.be/mjaoJ1rDoaQ
Вот неплохой видеоролик. Там проверка через теги идёт, можно самим выбирать что земля, а что нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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