Unity 经纬度转换成坐标
时间: 2023-05-20 09:03:13 浏览: 546
Unity 中经纬度可以通过以下公式转换成坐标:
x = R * cos(lat) * cos(lon)
y = R * cos(lat) * sin(lon)
z = R * sin(lat)
其中,R 是地球半径,lat 是纬度,lon 是经度。这个公式可以用于将经纬度转换成 Unity 中的坐标。
相关问题
Unity 经纬度转换成平面坐标
可以使用Unity自带的函数:Vector3 worldPos = Camera.main.WorldToScreenPoint(transform.position);,将经纬度转换为屏幕坐标。然后再使用屏幕坐标计算平面坐标。
unity经纬度转换坐标
Unity 经纬度转换坐标可以使用以下代码:
```csharp
using UnityEngine;
public static class GeoUtils {
const float EarthRadius = 6378137; // 地球半径,单位米
public static Vector3 ToWorldPosition(double lat, double lng) {
var x = EarthRadius * Mathf.Cos((float)lat * Mathf.Deg2Rad) * Mathf.Cos((float)lng * Mathf.Deg2Rad);
var y = EarthRadius * Mathf.Cos((float)lat * Mathf.Deg2Rad) * Mathf.Sin((float)lng * Mathf.Deg2Rad);
var z = EarthRadius * Mathf.Sin((float)lat * Mathf.Deg2Rad);
return new Vector3((float)x, (float)z, (float)y);
}
}
```
其中 `lat` 表示纬度,`lng` 表示经度,返回的是 `Vector3` 类型的世界坐标。使用时,可以像这样调用:
```csharp
var lat = 31.23;
var lng = 121.47;
var worldPos = GeoUtils.ToWorldPosition(lat, lng);
```
注意,这里的 (0, 0) 点是在赤道上的,因此如果使用的地图是以其他点为原点的,可能需要进行坐标偏移。