あまりにも暇すぎてUnityでゲーム作ってみた件⑭(GPS)

  • by

GPS、使う

どうせスマホなんだからGPS使ってみよう。

そう思い立って、GPSを微妙に使う機能を実装しました。

舞台は地球(一応地球とは明言してないけど)、となればGPSでスタートポジション決めるしかないっしょ!

ということで、オプションでGPS機能をオンにするとスタートが自分が今いる位置の上空になるスクリプトを組みます。

すげー短いでしょ。こんなもんです。

肝は13行目のlocale。

成分を抜き出すと…

x軸 Mathf.Cos(gpsData.longitude * D_R) * Mathf.Cos(gpsData.latitude * D_R)

y軸 Mathf.Sin(gpsData.latitude * D_R)

z軸 Mathf.Sin(gpsData.longitude * D_R) * Mathf.Cos(gpsData.latitude * D_R)

このD_RはGPSから取得できるデータが度数法なのでラジアンに直すための定数です。

それさっきも使えばよかった。

また出てきました、極座標

ところで前の記事でも似たような式見たことありません?

緯度と経度は角度なわけですが、この世界には角度×2(と長さ)という変数で3次元を作り出す方法があって、そういう座標系を極座標とか言うんですが…

前も出てきました、極座標。円やら球やらは極座標形式だとすっきりするんですねこれが。なぜなら三角関数で表すからなんです。

三角関数は三角とか言ってますが、円を表すのに都合がいい関数だから円関数とかに改名した方が良いレベルで円との相性が抜群なわけでして。

で、GPSからは角度しか得られないので、そこから3次元空間にどうにかするには極座標使ってくださいということです。よろしくお願いいたします。

ちなみに上のベクトルは長さ1のうるさくないベクトルです。方向だけ教えてくれる謙虚なやつです。

だからそのベクトルに550掛けてそこをプレイヤーの初期位置にするということが容易です。

便利でしょ?極座標。

⑮へすすむ

⑬へもどる

introへ

更新情報をプッシュ通知
させることが出来ます。

よろしければm(__)m

↓この記事をシェア!↓