Unity3D: позволить BoxCollider2D столкнуться с полом «раньше»?

Предварительная информация:

Я делаю 2D-игру в Unity, которая ведет себя как Castle Crashers, где игрок может перемещаться вперед и назад, как в сайдскроллере, но также вверх и вниз, как в игре с видом сверху, но все же это «сайдскроллер».

В Unity я использую Rigidbody2Ds и Boxcollider2Ds для физики. Однако, когда вы хотите смоделировать такие вещи, как бросание предметов, создание клинков или любой другой объект, который должен упасть на «пол», это становится непросто.

Предметы, которым необходимо упасть на пол, не знают, где находится пол, поэтому они упадут навсегда.

Вопрос

Можно ли настроить Boxcollider2D на столкновение с отдельной бесконечной осью x? Столкновение

Объект A должен столкнуться с красной осью, а объект B должен столкнуться с синей осью. Это возможно?


person Mathias Siig Nørregaard    schedule 26.03.2015    source источник


Ответы (1)


  • Вы можете использовать слои. А в настройках проекта -> Physics2DSettings настройте, чтобы они не сталкивались друг с другом. Существует жесткое ограничение в 32 слоя, и первые 8 используются системой (вы все еще можете использовать их для этого), поэтому у вас остается 24 незаметных слоя - измените слой ваших объектов, когда они меняют свое положение по оси Y. Геймплей может показаться ужасным.

  • Используйте 3D-физику. наклоните камеру на 45 градусов по оси X, установите проекцию на орто и нарисуйте 2D-спрайты поверх невидимых трехмерных физических объектов - тогда у вас будет настоящая 2D-плоскость, по которой можно ходить и прыгать.

  • Не используйте box2d вообще: напишите свою - простую физическую библиотеку, она нужна вам только для прыжков и падений, верно?

person izeed    schedule 26.03.2015
comment
Я рассматриваю вариант 3D-физики, так как я еще не так далеко в разработке. Спасибо. - person Mathias Siig Nørregaard; 26.03.2015