如何使用 GPS 坐标在 Vector3 中移动玩家? [统一]

Posted

技术标签:

【中文标题】如何使用 GPS 坐标在 Vector3 中移动玩家? [统一]【英文标题】:How to move a Player in Vector3 using GPS coordinates? [Unity] 【发布时间】:2021-11-24 23:12:05 【问题描述】:

我需要开发一个Unity android APP来帮助农业指导,我面临一些非常具体的GPS问题,让我简单地给你解释一下这个项目。

    它需要使用准确的 GPS 数据来指导您在田间地步 无法连接以太网,我只是获取了纬度 和经度,地图只是一个无限的地平面(已经 制作)不是真实世界的地图。 “玩家”(拖拉机、机器……)需要在 Unity 上移动 空间(不是地面纹理,玩家本身),因为我需要绘制 Trail 我的种植路径的渲染器(已经制作好了)。

所以我有一个非常特殊的情况,我发现的每个 API 都会移动地面纹理而不是播放器对象。我需要将我的纬度和经度变化(运动)转换为 Unity 空间运动,每次 GPS 坐标发生变化时,我都需要在 Vector3 坐标上准确地移动(transform.Translate)我的玩家。 This 代码是关于我现在拥有的。

//so in the Update method
if (newLat != lastLat || newLong != lastLong)
  //what do I do here?

编辑 1: This guy 在一个旧帖子上和我有同样的问题,但没有得到回应。

【问题讨论】:

【参考方案1】:

看完this code,我想你可以只得到一个对象的经纬度和设置位置不要移动

我的意思是这样的:

// Get the GPS values (I'm not sure if you can do it like this, I copied it from the code you linked)
latitude = Input.location.lastData.latitude;
longitude = Input.location.lastData.longitude;

// Set the position of a GameObject using the GPS values
transform.position = new Vector3(latitude , 0, longitude);

【讨论】:

我试过了,我的播放器一直冻结在 (0,0,0),因为在使用之前需要将 Lat 和 Long 转换为 Unity 单位,我也尝试过 code 变换。位置 = Quaternion.AngleAxis(longitude, -Vector3.up) * Quaternion.AngleAxis(latitude, -Vector3.right) * new Vector3(0, 0, 1);在answers.unity.com/questions/923182/… 上找到了这个

以上是关于如何使用 GPS 坐标在 Vector3 中移动玩家? [统一]的主要内容,如果未能解决你的问题,请参考以下文章

unity3d中常规移动的四种方法

我可以从网站上读取“真实”的移动 GPS 坐标吗?

android 移动设备上的原始 gps 坐标是不是已经通过 Kalman 得到改进

鼠标控制物体移动

React Native 查询 GPS 坐标并给出超时

微信小程序 获取位置移动选点逆地址解析