Я разрабатываю простую 2D-игру в Unity и столкнулся с проблемой при столкновении. У меня есть два объекта, дерево и игрок. Дерево не двигается и представлено несколькими спрайтами и полигональным коллайдером. Игрок перемещается с помощью пользовательского скрипта (НЕ контроллера персонажа), и к нему прикреплены кинематический Ridgidbody и полигональный коллайдер.
Мое предполагаемое поведение состояло бы в том, чтобы игрок «сталкивался» с деревом и блокировался им, поэтому ни один из объектов не мог двигаться. Тем не менее, это не кажется простым способом сделать это.
Установка для компонента RidgidBody дерева значения «статический» или «динамический» приводит к тому, что столкновения не обнаруживаются. Я думал сделать проигрыватель «динамическим» твердым телом, но документация по Unity предполагают, что динамические твердые тела не должны перемещаться их компонентом преобразования, как работает моя текущая система. Кроме того, установка динамического значения приводит к непреднамеренному поведению, когда игрок зависает без причины, а поскольку физика не применяется к объекту игрока, это кажется плохим вариантом использования для динамического. Я могу просто ошибаться в этом.
Я мог бы использовать скрипт, чтобы каким-то образом заблокировать положение игрока при срабатывании события коллайдера, но это кажется очень хакерским. Может ли кто-нибудь дать некоторое представление о том, как справиться с этим?