目标:给定两个3D向量,旋转一个方框,该方框将在两个向量Vector3.Lerp(A, B, 0.5f)
之间生成,以使其与顶点定义的线对齐。 “盒子”本身基本上是一个 2D画布游戏对象(即Sprite),但它是在3D世界中生成的。
也请参考以下图像。
请记住,这是一个3D问题,因此所有此类情况都会发生,例如在立方体的表面上。
一个想法是以某种方式获取两个顶点的交叉向量,并使用Quaternion.LookRotation()或Quaternion.RotateTowards方法将RectTransform.rotation与其对齐,但是由于我对所有这将不胜感激。
答案 0 :(得分:1)
您要使Canvas的X轴与(B - A)
方向对齐。
从数学上讲,有无限种方法可以只将一个轴与给定方向对齐,因此您需要指定第二个对齐规则(通常是UP矢量)。
Quaternion.LookRotation的文档中说:
(旋转对象的)Z轴与正向对齐,(旋转对象的)X轴与叉积对齐 在向前和向上之间,并且(旋转对象的)Y轴与叉积对齐 在Z和X之间。
从“画布”的角度(正确定向)来看,Z轴朝向立方体的中心,所以...
// This is the direction from the Box to the center of the cube
Vector3 boxToCube = Vector3.Cross(B - A, Vector3.up);
// So this should be the correct orientation of the Canvas
Quaternion orientation = Quaternion.LookRotation(boxToCube, Vector3.up);