Изо всех сил пытаюсь принять решение о реализации механики подъема по карнизу для управляемого физикой 2-го платформера. Каков наилучший способ сделать это, не становясь слишком сложным?
Насколько я понимаю (любитель здесь не профи), есть несколько вариантов, в том числе:
Приложите контролируемое усилие к твердому телу на оси y, пока положение корня не окажется чуть выше положения руки, затем приложите достаточное усилие к оси x, чтобы персонаж стоял на платформе. В то же время, каким-то образом синхронизировать это с анимацией подъема.
Замечания : движение здесь легко и даже может управляться призматическим скользящим соединением, но я не уверен, как бы я синхронизировал анимацию (позвоночник) с движением.
Корневая анимация движения, которая управляет корневой позицией персонажа. По завершении телепортируйте твердое тело, и надеюсь, что box2d все равно сможет своевременно отреагировать на любое столкновение, если какие-либо объекты упадут с неба.
Замечания : звучит проще для анимации, но я не уверен, что у меня возникнут какие-либо проблемы со временем выполнения позвоночника, box2d или более поздней версией движущихся платформ и платформ различной высоты.
Примените ограничение IK программно к рукам, чтобы зафиксировать их на месте, и продолжайте вращать кости вручную или применять небольшие предустановленные (несколько клавиш / кадры) анимации, одновременно прикладывая необходимую силу к твердому телу.
Замечания : кажется, что это дало бы максимальный контроль над игроком, но для меня это сложно сделать на моем уровне, не совсем уверенный, с чего начать.
Спасибо заранее за любые данные!
К вашему сведению: это движок на базе ECS (libgdx + ashley) с box2d. Захват уступа уже реализован как отдельная система, поэтому мы можем предположить, что персонаж уже способен висеть на выступе любой высоты.