如何通过线路镜像(和旋转)对象,就像门户一样?

问题描述 投票:1回答:1

我想创建一个2D门户效果。因此,退出出口门户的对象应该在位置/旋转方面与通过入口门户的对象相对应。直到原始对象的一半是通过门户网站。

我制作了一个应该在一条线(门户网站)上镜像的精灵多维数据集。退出门户网站的多维数据集只是原始的克隆。如果我们旋转门户,“反射”立方体应该与原始立方体的位置一起旋转,与门户相比。如果我们旋转原始立方体本身,那么“反射”也应该与门户相关。我无法弄清楚要做哪些旋转以及在哪个空间。我用局部变换等尝试过很多东西。

我使用Vector2.Reflect来获得反射的正确位置:

Vector2.Reflect(
  (line.transform.position - cube.transform.position), line.transform.up
);

Image 1

要将立方体镜像为反射,我添加此旋转:

reflection.transform.localRotation = Quaternion.Euler(0, 180, 0)
  * cube.transform.localRotation;

但是现在如果我旋转门户,反射应该像原始立方体在门户空间中旋转一样旋转,就像在这里画得很差:

Image 2

有没有人知道哪些是正确的转换/旋转来实现这一点,比如localRotation / localTransform计算?我已经尝试了很多但是在某个地方,我对正确数学的理解会丢失。

对不起,还不能发布图片:)

unity3d rotation quaternions portal mirroring
1个回答
0
投票

我建议简单地反映cube.transform.forward:

reflection.transform.forward = Vector2.Reflect(cube.transform.forward, line.transform.up);
© www.soinside.com 2019 - 2024. All rights reserved.