1、前言
近期和Web端结合开发一个人员定位信息的项目,Unity的WebGL包嵌入到Unity前端,Web端发送现场的人员定位坐标给我,我需要再WebGL中对应的位置显示模型,但是Unity中的坐标和实际的人员定位坐标是不一样的,所以需要一个转换,代码如下:
2、代码
假设服务器传回的四个点分别是 (x1, y1, z1), (x2, y2, z2), (x3, y3, z3), (x4, y4, z4),而在Unity中相应的点分别是 (u1, v1, w1), (u2, v2, w2), (u3, v3, w3), (u4, v4, w4)。
- 首先,计算服务器坐标到Unity坐标的缩放比例和偏移量:
//缩放比
Vector3 serverScale = new Vector3((u2 - u1) / (x2 - x1), (v2 - v1) / (y2 - y1), (w2 - w1) / (z2 - z1));
//偏移量
Vector3 serverOffset = new Vector3(u1 - x1 * serverScale.x, v1 - y1 * serverScale.y, w1 - z1 * serverScale.z);
- 然后,可以使用计算得到的缩放比例和偏移量来将服务器坐标转换为Unity坐标:
Vector3 ConvertServerToUnityCoordinates(Vector3 serverCoords)
{
Vector3 unityCoords = new Vector3(serverCoords.x * serverScale.x + serverOffset.x,
serverCoords.y * serverScale.y + serverOffset.y,
serverCoords.z * serverScale.z + serverOffset.z);
return unityCoords;
}