Я хочу создать эффект 2D портала.Таким образом, объект, выходящий из выходного портала, должен соответствовать по местоположению / повороту объекту, проходящему через входной портал.Это до тех пор, пока половина исходного объекта не пройдет через портал.
Я создал спрайтовый куб, который должен быть отражен по линии (портал).Выходящий из портала куб - это просто клон оригинала.Если мы вращаем портал, «отражающий» куб должен вращаться вместе с расположением исходного куба по сравнению с порталом.Если мы вращаем сам оригинальный куб, то «отражение» также должно быть отражено относительно портала.Я просто не могу понять, какие вращения делать и в каком пространстве.Я пробовал много вещей с локальными преобразованиями и т. Д.
Я использую Vector2.Reflect, чтобы получить правильную позицию для отражения:
Vector2.Reflect(
(line.transform.position - cube.transform.position), line.transform.up
);
Изображение 1
Чтобы отразить куб как отражение, я добавляю это вращение:
reflection.transform.localRotation = Quaternion.Euler(0, 180, 0)
* cube.transform.localRotation;
Но теперь, если я вращаю портал, отражение должно вращаться так же, как вращается оригинальный куб в пространствепортал, как здесь плохо прорисовано:
Изображение 2
Кто-нибудь знает, какие правильные преобразования / вращения используются для этого, например, вычисления localRotation / localTransform?Я так много пытался, но где-то на этом пути мое понимание правильной математики теряется.
Извините, пока не могу опубликовать изображения:)