У меня есть следующая сцена https://rawgit.com/bicarbon8/SpaceSim/MomentumProblem/babylon.html, который я настроил с возможностью поворота с помощью следующих клавиш:
- я = шаг вниз
- k = шаг вверх
- j = катиться влево
- л = повернуть направо
- u = рыскание влево
- о = рыскание вправо
- / = отменить все вращения
и для перемещения с помощью следующих клавиш:
- д = двигаться вперед
- а = двигаться назад
- s = стрейф влево
- f = вправо
- е = двигаться вверх
- д = двигаться вниз
- \ = отменить все движения
который отлично работает для перемещения сетки в указанном направлении, но я хотел бы инициировать движение на основе вращения сетки, но затем продолжить движение в исходном направлении независимо от изменения вращения сетки, которая происходит после начала движения (сохранение импульса).
Я отслеживаю движение в каждом направлении через отдельный объект со значениями x, y и z, так что каждое нажатие клавиатуры для движения только изменяет этот объект, который затем применяется к сетке для каждого цикла цикла анимации, но потому что я использую:
mesh.locallyTranslate(новый BABYLON.Vector3(x, y, z))
когда сетка вращается, движение вращается вместе с сеткой. Как я могу преобразовать направление вращения сетки в Vector3, который я могу использовать с переводом на основе мира, чтобы последующее вращение сетки не влияло на уже имеющееся движение?
ПРИМЕЧАНИЕ: это должно имитировать движение в условиях микрогравитации / без гравитации.
Заранее благодарю за любую помощь.