Physics2D.OverlapBoxAll не работает правильно - PullRequest
0 голосов
/ 05 апреля 2019

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

У меня есть полигонный коллайдер, выступающий в качестве физического коллайдера для моего игрока, и у меня также есть коллайдер с триггерной коробкой в ​​нижней части моего плеера, чтобы определить, когда я на земле. В моей тестовой среде на земле также есть коллайдер, но кажется, что OverlapBoxAll не может определить, когда боксы перекрываются правильно.

public bool isGrounded

private bool GetGrounded() {
    //Check ground
    Collider2D[] HitColliders = Physics2D.OverlapBoxAll(FeetCollider.transform.position,FeetCollider.size, 0, GroundLayer);
    if (HitColliders.Length > 0) return true;
    return false;
}

void FixedUpdate() {
    isGrounded = GetGrounded();
}

В моей сцене у меня есть окружающий горизонтальный спрайт с соответствующим коллайдером. Это находится на 0,0,0. Мой полукок находится прямо над 0,1,0 Когда я играю на сцене, мой персонаж падает на землю и правильно приземляется. Тем не менее, в инспекторе я вижу, что isGounded bool все еще установлен в false. Визуально я вижу, что боксовые коллайдеры перекрываются. Я попытался отредактировать коллайдер бокса игроков в режиме игры, и я смог заставить его проверить истинность. Мне пришлось растянуть его примерно в 10 раз по сравнению с нормальной высотой, намного ниже нижнего края земли, прежде чем значение bool подтвердится. Как мне заставить это работать так, чтобы BoxColliders регистрировались правильно?

...