@givemoneybiatch
Немного веб, немного гейм

Как проще всего приклеить танк к поверхности земли?

Танк в данном случае имеет BoxCollider2D и RigidBody2D с гравитацией.
Поверхность земли - это EdgeCollider2D с множеством вершин так что в каждый момент времени танк соприкасается одновременно с десятком вершин.

Задача состоит в том, чтобы танк мог подниматься и опускаться по склонам гор, но при этом не переворачиваться и не съезжать со склонов во время стоянки. Чтобы такого не было я по умолчанию на RigidBody2D ставлю материал Friction 100, что позволяет танку стоять на склоне, а когда нажата клавиша движения, то меняю материал на Friction 0,4, что позволяет танку двигаться.

И все бы ничего, только танк все равно переворачивается на крутых склонах. Как видно на картинке, нос у танка задран вверх.
5caf4d72ca08f941029713.png

а чтобы избежать переворотов, мне пришло в голову только повторить эффект гусеницы - т.е. чтобы днище танка повторяло рельеф поверхности земли. Во время соприкосновения с землей можно попытаться считывать ее координаты и строить EdgeCollider2D с такими же точками, только на танке. Не знаю поможет ли, но может есть способ попроще?
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Просто идея, сделайте так чтобы на танк не влияла физика в принципе, т.е. обрабатывайте и отрисовывайте его сами. Вычисляете две точки касания танка с его дном, соответственно при перемещении двигайте эти точки по графику, который делает поверхность (скорость по x пересчитывайте а основе угла наклона танка), таким образом ваш танк будет поворачиваться. в моменты когда второй точки найти не удается, вам придется решить, что делать, либо продолжать его двигать, оставив прежний угол, либо делать поворот в сторону движения, до тех пор пока снова не станет двух точек касания. При определенном угле останавливайте (чтобы вертикально не ехало)

Выглядеть это будет почти натурально, зато не придется делать МОРЕ лишних движений и вычислений, особенно если вы хотите много таких танков.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы