Я сталкиваюсь с неприятной проблемой, пытаясь создать игровой движок за три JS. Это математическая задача, но также и проблема программирования.
Я реализовал систему движения на основе скорости для аватара игрока - в этом примере я использовал танк.
В настоящее время когда игрок ударяется о стену, независимо от угла, танк неизменно останавливается мертвым.
Однако я хочу, чтобы это был тот случай, когда скорость танка изменяется, поскольку принужден следовать угол стены, а также уменьшается на величину, связанную с этим углом.
Например, на фиг. А при ударе о стенку танк продолжает пытаться двигаться вперед, но его скорость равна изменен так, что теперь он движется вперед и вбок, с пониженной скоростью.
На ФИГ. В танк врезается в стену, и его общая скорость достигает 0.
. C, танк отрывается от стены, и его общая скорость уменьшается лишь на небольшое количество.
Я понял, что мне нужно как-то объединить вектор скорости танка со стеной или mal vector, чтобы получить скорректированный вектор, но я пытаюсь изобразить это математически / программно.
Я пытался использовать: tank.velocity.multiply(wallFaceNormal);
(оба tank.velocity
и wallFaceNormal
равны Vector3
объекты.) но это, кажется, работает, как задумано, только когда стена находится под углами 0, 90, 180 или 270.