Я пытаюсь настроить простое обнаружение столкновений в единстве, чтобы определить, когда мой игрок касается земли.
У меня есть полигонный коллайдер, выступающий в качестве физического коллайдера для моего игрока, и у меня также есть коллайдер с триггерной коробкой в нижней части моего плеера, чтобы определить, когда я на земле. В моей тестовой среде на земле также есть коллайдер, но кажется, что 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 регистрировались правильно?