Единство: плавающий 2D-символ с использованием BoxCollider2D

#unity3d

#unity3d

Вопрос:

Я довольно новичок в Unity, и я создал простую сцену с моим персонажем и землей. Я добавил Rigidbody2D и BoxCollider2D к символу и еще один BoxCollider2D к основанию. Границы коллайдеров точно соответствуют границам персонажа / земли, но мой персонаж не падает на землю, когда я нажимаю play, а скорее останавливается и плавает на несколько пикселей над ним.

Я видел много похожих вопросов, но решения не сработали для меня (или, может быть, я неправильно их понял, как я упоминал выше, я новичок в Unity, и это моя первая игра).

Вот как выглядит плавающий:

введите описание изображения здесь

Очевидно, я мог бы «исправить» это, опустив верхнюю границу ниже фактической границы земли, вот так:

введите описание изображения здесь

Но это, очевидно, не очень хорошее решение, и я все еще хотел бы знать, что вызывает эту ошибку и как ее исправить.

Ответ №1:

Возможно, разрыв имеет размер смещения контакта по умолчанию:

Установите значение расстояния близости для коллайдеров, которые будут считаться контактирующими, даже если они на самом деле не находятся в контакте. Коллайдеры, расстояние между которыми меньше суммы их значений contactOffset, генерируют контакты. Это позволяет системе обнаружения столкновений предсказуемо применять ограничение контакта, даже если объекты слегка разделены. Внимание: слишком сильное уменьшение этого значения может привести к нарушению способности Unity вычислять непрерывные столкновения полигонов. И наоборот, слишком большое увеличение значения может создать артефакты для столкновения вершин.

Вы можете найти его в Edit > Project Settings > Physics2d .

Комментарии:

1. Спасибо, это была проблема!