Я делаю небольшую физическую игру, в которой вы управляете автопогрузчиком и должны перемещать ящики.
Я разрешаю пользователю перемещать ящики, устанавливая вилы для вилочного погрузчика (приспособление, установленное как датчик) под ящиком и создание WeldJoint, когда пользователь нажимает клавишу пробела.
Проблема в том, что как только сварка создается, центр вращения перемещается (я не могу определить контрольную точку) и поворот вилочного погрузчика иногда прыгает, и я не могу понять, почему
Полный исходный код того, что я получил, находится здесь - https://codepen.io/MichaelDilloway/pen/zYvxowJ?editors=0010
Но в частности, здесь происходит сварка -
document.addEventListener('keyup', oEvent => {
switch(oEvent.code) {
case 'Space':
oForklift.forkIsUp = !oForklift.forkIsUp;
console.log('oForklift.forkIsUp: ' + oForklift.forkIsUp);
if(oForklift.forkIsUp) {
const oContactList = oForklift.body.getContactList();
if(oContactList) {
oForklift.crateWeld = planck.WeldJoint({}, oForklift.body, oContactList.other, oForklift.body.getPosition());
oWorld.createJoint(oForklift.crateWeld);
}
}
if(!oForklift.forkIsUp && oForklift instanceof planck.WeldJoint) {
oWorld.destroyJoint(oForklift);
}
break;
}
});
Пример "прыжка" ... https://gfycat.com/greatblissfulleveret