MechanizM писал(а):В методе есть worldPosition и есть setLinearVelocity и что за что отвечает, в контексте кода, мне пока не понятно.
Судя по коду, берутся глобальные координаты объекта (
worldPosition), посылается луч в направлении движения для проверки столкновения со стеной перед перемещением. Потом что-то подобное делается с полом. Если мне не изменяет память, я пытался рассчитать перемещение объекта проверкой столкновений со стенами и плоскостью пола под ногами вручную. Какой-то костыль, который давал бы мне дополнительную ифнормацию о столкновениях, которую не давал движок базовым функционалом. Но в итоге ничего адекватного не получилось, я выбросил лишнее и оставил невразумительный огрызок который хоть как-то работает. Я бы не рекомендовал углубляться в этот кусок кода.
К слову, нужно посмотреть на тип физики объекта "PHYCharacter_body". Тип физики
Character в той версии BGE работал несколько отлично от Dynamic Body и Rigid Body, в том числе иначе ведет себя придание этому объекту скорости через
setLinearVelocity. Вероятно, получившаяся каша в методе
movement, в том числе заслуга неадекватного поведения типа физика
Character.
MechanizM писал(а):у Вас управляемый объект не вращается при повороте камеры, только камера через объект пустышку, у меня же, моим скриптом, вращается управляемый объект, в этом есть критичная разница, или просто кому как удобней?
Я вроде хотел минимизировать физическое воздействие на объект, чтобы как можно сильнее упростить задачу. Вращая пустышку, я не вращаю объект, а значит не придется думать об угловых скоростях и их возможном влиянии на движение. Не критично, но чем проще конструкция, тем проще работа.