• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Стена и Персонаж

  • Автор темы Автор темы Log2g
  • Дата начала Дата начала
Новичок
Новичок
Статус
Оффлайн
Регистрация
7 Авг 2025
Сообщения
1
Реакции
0
Создаю 2D-платформер. Мне нужно как-то отслеживать, касается ли игрок именно стены (стены, пол и потолок имеют одинаковые теги и слои, так что решение через них не подходит). Пробовал реализовать через рейкаст, но не получилось. Если у кого-то есть варианты, как реализовать такую проверку расскажите, пожалуйста
 
В Unity для такой задачи можно обойтись без тегов и слоёв, если определить «стену» по направлению коллизии.

Идея:
В 2D физике Unity при коллизии можно проверить нормаль контакта (contact.normal).

Если нормаль направлена примерно влево или вправо (ось X), значит это стена.

Если нормаль направлена вверх — это пол, вниз — это потолок.

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



Мы не полагаемся на теги/слои — только на геометрию (нормаль контакта).

Наклонные поверхности корректно попадают в «пол», пока их угол ≤ floorMaxAngle.

Стены — всё, что «достаточно вертикально» (между wallMinFromUp и 180 - wallMinFromUp).

Знак normal.x даёт сторону стены (левая/правая), что удобно для прыжков от стены и т.п.

Если стоим на краю (есть контакт и с полом, и со стеной), можно задать приоритет пола, чтобы не ломать приземление.


Практические советы

Для «липких» углов/дребезга увеличь Bounce Threshold у Rigidbody2D или добавь Contact Offset поменьше на коллайдерах.

Tilemap/CompositeCollider2D могут давать много контактов — цикл по collision.contacts как раз это учитывает.

Если персонаж «пролетает» тонкие стены, включи Continuous у Rigidbody2D или увеличь толщину коллайдера.
 
Назад
Сверху Снизу