Unity格罗宁根1:1城市项目 minimap经纬度计算偏移问题排查
1:1比例格罗宁根城市项目小地图位置偏移问题:出生点对齐,远离后偏移递增
我是一名实习生,正在开发荷兰格罗宁根1:1比例的城市项目,目前已经实现了小地图功能,但遇到了一个问题:在出生点位置时,玩家位置和小地图完全对齐,但随着玩家远离出生点,小地图上的位置偏移会逐渐增大。
我已经将游戏内的x/z坐标转换为米来计算经纬度,但误差依然存在。以下是完整的miniMapManager代码,重点请关注translateCoordinates()方法:
// 完整miniMapManager代码 public class miniMapManager : MonoBehaviour { // 省略其他成员变量与初始化逻辑 // 重点关注的坐标转换方法 private Vector2 translateCoordinates(Vector3 worldPosition) { // 游戏坐标转米(根据项目实际转换系数) float worldToMeterScale = 1f; // 示例系数,实际根据项目设定 float meterX = worldPosition.x * worldToMeterScale; float meterZ = worldPosition.z * worldToMeterScale; // 米转经纬度(基于出生点原点坐标) const float earthRadius = 6378137f; float originLat = 53.219383f; // 格罗宁根大致纬度 float originLon = 6.566502f; // 格罗宁根大致经度 float deltaLon = (meterX / earthRadius) * Mathf.Rad2Deg; float deltaLat = (meterZ / earthRadius) * Mathf.Rad2Deg; float targetLon = originLon + deltaLon; float targetLat = originLat + deltaLat; // 经纬度转小地图纹理坐标 float minLon = 6.54f; float maxLon = 6.59f; float minLat = 53.20f; float maxLat = 53.23f; float mapPosX = (targetLon - minLon) / (maxLon - minLon) * mapTexture.width; float mapPosY = (maxLat - targetLat) / (maxLat - minLat) * mapTexture.height; return new Vector2(mapPosX, mapPosY); } // 省略其他绘制、更新逻辑 }
我录制了演示视频,能直观看到出生点位置对齐正常,玩家移动越远,小地图位置偏移越明显的现象。
希望有经验的开发者能帮忙排查问题根源,感谢!
内容的提问来源于stack exchange,提问作者Thomas de Haas
相关产品推荐
相关产品推荐

