У меня есть камера, которую я хочу перемещать по двум осям (x и z). В локальном пространстве мы имеем:Перемещение камеры по двум осям в WorldSpace
И поскольку объект камера поворачивается, в мировом пространстве мы имеем:
То, что я хочу достичь, это: для перемещения камеры вдоль 2 оси через пользовательский вход - камера смотрит на плоскость сверху и с помощью кнопок клавиатуры пользователь может скользить по плоскости в 4 плоских направлениях. Это прекрасно работает, манипулируя transform.position.x и transform.position.y Недвижимость в местное пространство.
У меня есть следующая проблема: пользователь может также поворачивать объект камеры. Поступая таким образом, я не могу больше управлять преобразование локального пространства, так как при определенных оборотах «вверх» начинает означать «вниз» и т.д.
я попытался сделать следующее в мировом пространстве:
transform.Translate(transform.right * user_input, Space.World);
Но это не достигает того, что я хочу, так как transform.right захватывает красный вектор в мировом пространстве.
Что я хочу сделать: переместите камеру вдоль красных и синих векторов в локальное пространство, но сохраните координаты в мировом пространстве.
Я был бы признателен, если предоставит вам часть материалов. Огромное спасибо!
Вот что бы я сделал. –
Я использовал это в 3D-анимации и Unity, чтобы иметь возможность легко изолировать преобразования на камерах, поэтому я полностью одобряю этот подход. – Serlite
Да, это одна из тех странных вещей, которые они «не упоминают в руководстве». Вы делаете это повсюду и всегда в видеоиграх с использованием игровых движков, таких как Unity, но это никогда не «объясняется» нигде. Я часто думал, что Unity должно по своей сути встроить концепцию вложенных игровых объектов, поскольку она вездесуща, возможно, по умолчанию на камерах. В любом случае. «Как бы то ни было, наш хороший ОП пытается достичь, это, вероятно, будет частью решения! – Fattie