Unity中的第一人称虚拟现实游戏方法

时间:2014-02-26 15:18:44

标签: 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 = earthRadius * Mathf.Sin(lat);

然后,我试图找到两个(x,y,z)坐标之间的差异,以实现“玩家改变他/她的位置的程度”

所以,在gps位置的每次更新中,我都改变了玩家位置。

我脑子里有很多关于这个游戏的问题(使用指南针和陀螺仪来了解玩家的确切位置,根据gps定位玩家和建筑物等)。

对于像这样的游戏,最好的方法是什么?有没有使用太多gps数据的解决方案。我的意思是,gps并不总是足够精确。我可以做一些事情,比如在开始时通过gps数据定位建筑物和播放器,并使用陀螺加速度计 - 指南针等在该建筑物上正确行走而不连续拍摄GPS数据。

此外,我在将GPS位置反映到游戏中的x-y-z坐标时遇到了巨大的麻烦。例如, Haversine Formula 可以计算建筑物与玩家之间的距离,但我无法找到定义其位置关系的方法。我的意思是建筑物可以在玩家上方或下方10米处距离?我能做什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我的第一个建议是不要每隔几秒ping一次gps数据,因为KILLS的电池续航时间。可能每隔几分钟左右最多 第二,建筑物的高度是否不应与玩家身高相匹配?所以我假设身高为0,只担心x和y 第三,您也可以尝试使用手机的相机设置高度,并使用离地面的距离来获得播放器的高度。