我想创建2D门户效果。因此,离开出口门户的物体应该在位置/旋转上与穿过入口门户的物体相对应。直到原始对象的一半都通过门户。
我制作了一个sprite多维数据集,该多维数据集应在一条线(门户)上进行镜像。退出门户的多维数据集只是原始内容的副本。如果我们旋转门户,则与门户相比,“反射”立方体应与原始立方体的位置一起旋转。如果我们旋转原始多维数据集本身,则“反射”也应相对于门户进行镜像。我只是不知道要进行哪些旋转以及在哪个空间进行旋转。我已经尝试了许多使用局部变换的方法。
我使用Vector2.Reflect来获取反射的正确位置:
Vector2.Reflect(
(line.transform.position - cube.transform.position), line.transform.up
);
要镜像立方体作为反射,请添加此旋转:
reflection.transform.localRotation = Quaternion.Euler(0, 180, 0)
* cube.transform.localRotation;
但是现在如果旋转门户,反射的旋转方式应与原始立方体在门户空间中的旋转方式相同,就像此处绘制得很差一样:
有人知道哪一个正确的转换/旋转可以完成此操作,例如localRotation / localTransform计算吗?我已经做了很多尝试,但是一直以来我对正确数学的理解都消失了。
对不起,还不能发布图片:)
答案 0 :(得分:0)
我建议简单地反映cube.transform.forward:
reflection.transform.forward = Vector2.Reflect(cube.transform.forward, line.transform.up);