3d 统一的第一人称虚拟现实游戏方法

3d 统一的第一人称虚拟现实游戏方法,3d,gps,unity3d,augmented-reality,3d,Gps,Unity3d,Augmented Reality,我想创造一种不同的游戏。地理位置(纬度、经度)将用于放置3d建筑模型,靠近该区域的移动设备可以登录游戏并在第一人称视图中漫游该3d建筑 首先,我尝试使用以下公式将地理位置转换为X、Y、Z坐标: float earthRadius = 6378.137f; float x = earthRadius * Mathf.Cos(lat)*Mathf.Cos(lon); float y = earthRadius * Mathf.Cos(lat)*Mathf.Sin(lon); float z = ea

我想创造一种不同的游戏。地理位置(纬度、经度)将用于放置3d建筑模型,靠近该区域的移动设备可以登录游戏并在第一人称视图中漫游该3d建筑

首先,我尝试使用以下公式将地理位置转换为X、Y、Z坐标:

float earthRadius = 6378.137f;
float x = earthRadius * Mathf.Cos(lat)*Mathf.Cos(lon);
float y = earthRadius * Mathf.Cos(lat)*Mathf.Sin(lon);
float z = earthRadius * Mathf.Sin(lat);
然后,我试图找出两个(x,y,z)坐标之间的差异,以了解“玩家改变他/她的位置的程度”

所以,每次更新gps位置时,我都会改变玩家的位置

关于那个游戏,我有很多疑问(使用指南针和陀螺仪来了解玩家的确切位置,基于gps定位玩家和建筑物等)

对于这样的游戏,什么是最好的方法?有没有一种不使用太多gps数据的解决方案。我的意思是,gps并不总是足够精确。我可以在开始时通过gps数据定位建筑物和播放器,并使用陀螺加速度计罗盘等在建筑物上正确行走,而无需连续获取gps数据

另外,我在将GPS位置反映到游戏中的x-y-z坐标方面遇到了巨大的麻烦。例如,Haversine公式可以计算建筑物和玩家之间的距离,但我找不到定义它们位置关系的方法。我的意思是,一座建筑物可以在玩家上方或下方有10米的距离?我能做什么


谢谢你的帮助

我的第一个建议是不要每隔几秒钟ping一次gps数据,因为这会缩短电池寿命。最多可能每隔几分钟左右。
第二,建筑物的高度不应该与球员的高度相匹配吗?所以我假设高度为0,只担心x和y。
第三,您还可以尝试使用手机摄像头设置高度,并使用离地面的距离来获取播放器的高度