Задать вопрос
@Fama18122000

Почему не работает прыжок в Unity 2D?

private float speed = 8;
    float jumpForce = 15;
    private bool isGround = false;

    private Rigidbody2D rb;
    private SpriteRenderer sprite; 

    private void FixedUpdate() {
        CheckGround();
    }
    private void Update(){
        if (Input.GetButton("Horizontal")) 
            Run();
        if (isGround && Input.GetButton("Jump")) {
            Jump();
            Debug.Log("Jump");
        }
    }

    private void Awake() {
        rb = GetComponent<Rigidbody2D>();
        sprite = GetComponentInChildren<SpriteRenderer>();
    }
    private void Jump() {
        rb.AddForce(transform.up * jumpForce);
    }
    private void CheckGround() {
        Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, 0.3f);
        isGround = collider.Length > 1;
        Debug.Log("CheckGround");
    }

Проблема по результатам дебага находится в этой строчке isGround = collider.Length > 1 выражение приписывает значение false хотя по идее должно быть true
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos Куратор тега Unity
А почему это оно должно быть истиной? Для меня вот это неочевидно - почему если мы касаемся больше чем 1 коллайдера то мы на земле?
Ответ написан
CHIDWI
@CHIDWI
Unity3D Developer
Очень странный способ чекать землю. А почему бы не использовать встроенные возможности OnCollisionEnter/stay/exit и чекать в них по тегу или имени?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы