Vector3.Lerp和世界/屏幕坐标

时间:2019-12-28 14:17:35

标签: c# unity3d

如果可能,我需要一些建议。 我有一个new plane(),用鼠标在其上绘制形状,并用小控件线显示它们。我插入的每个新点(Vector3)都用Gizmos.DrawCube()进行可视化。在绘图期间,我可以通过编辑器在两个现有点之间添加一个新点。由于我希望使用Vector3.Lerp将新点插入两个极端之间的中间,因此将float参数设置为0.5f,我得到了正确的位置。问题是,如果该线不是“水平”(同一x轴上的两个点),则新插入的点不会“看起来”到中心。如果线很深(两个点之间的Z差异较大),则插入的点(显然)与最远的点重叠。因此,我想找到一个Lerp float的值,该值使我可以看到插入的点作为两个点之间的中心,尽管不是真正的中心。因此,我想到了将坐标从“世界”转换为“屏幕”,找到中心并将其转换回“世界”的方法。

Vector3 previousSpot = new Vector3(); // first point
Vector3 currentSpot = new Vector3(); // second point
Vector3 previousSpotToScreen = cam.WorldToScreenPoint(previousSpot);
Vector3 currentSpotToScreen = cam.WorldToScreenPoint(currentSpot);
Vector3 insertionSpot = Vector3.Lerp(previousSpotToScreen, currentSpotToScreen, 0.5f);
Vector3 insertionSpotToWorld = cam.ScreenToWorldPoint(insertionSpot);

但是获得的值不正确。 你有什么建议吗?

0 个答案:

没有答案
相关问题