質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

解決済

GPSとUnity内のオブジェクトの動きを連動させたい

wing
wing

総合スコア0

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

1回答

0評価

0クリップ

82閲覧

投稿2021/06/07 18:02

前提・実現したいこと

Andorid端末で現在地と移動先の緯度経度を取得し、それを直交座標(X,Y,Z座標)になおし、その差を計算し、それを基にして、Unity内のオブジェクトを動かしたいと考えています。
イメージ的にはポケモンGOに近いモノです。
・一定の時間で更新される緯度経度を更新前の値と更新後の値の差分を取りたいと考えており、その一つ前の値を保持する方法
・緯度経度を直交座標に直すための処理を何度も繰り返しソースに書かなくてもよい方法
この2点を解決したいと考えております。

該当のソースコード

C#

using System.Collections; using System.Collections.Generic; using UnityEngine; using Mathd; using System; /// <summary> /// 座標の変換用クラス。なるべくシンプルに必要な変換だけ。 /// 測地系はWGS84を使用。 /// 計算方法は「世界測地系と座標変換 飛田幹夫 日本測量協会」を参考にした。 /// </summary> public class GPS_move : MonoBehaviour { private const double a = 6378137.0; private const double f = 1.0 / 298.257223563; private const double e2 = f * (2.0 - f); /// <summary>経緯度取得間隔(秒)</summary> private const float IntervalSeconds = 1.0f; /// <summary>ロケーションサービスのステータス</summary> private LocationServiceStatus locationServiceStatus; /// <summary>経度</summary> public float Longitude { get; private set; } /// <summary>経度</summary> public float Latitude { get; private set; } ///<summary>高度</summary> public float altitude { get; private set; } ///<summary>水平方向の精度</summary> public float horizontalAccuracy { get; private set; } ///<summary>垂直方向の精度</summary> public float verticalAccuracy { get; private set; } /// <summary>緯度経度情報が取得可能か</summary> /// <returns>可能ならtrue、不可能ならfalse</returns> public bool CanGetLonLat() { return Input.location.isEnabledByUser; } private IEnumerator Start() { while (true) { locationServiceStatus = Input.location.status; if (Input.location.isEnabledByUser) { switch (locationServiceStatus) { case LocationServiceStatus.Stopped: Input.location.Start(); break; case LocationServiceStatus.Running: Longitude = Input.location.lastData.longitude; Latitude = Input.location.lastData.latitude; altitude = Input.location.lastData.altitude; horizontalAccuracy = Input.location.lastData.horizontalAccuracy; verticalAccuracy = Input.location.lastData.verticalAccuracy; break; default: break; } }       //直交座標に直す Longitude = Math.PI * Longitude / 180.0; Latitude = Math.PI * Latitude / 180.0; double N = a / Math.Sqrt(1.0 - e2 * Math.Pow(Math.Sin(Longitude), 2.0)); double X = (N + altitude) * Math.Cos(Longitude) * Math.Cos(Latitude); double Z = (N + altitude) * Math.Cos(Longitude) * Math.Sin(Latitude); double Y = (N * (1.0 - e2) + altitude) * Math.Sin(Longitude); var vec3d = new Vector3d(X, Y, Z); yield return new WaitForSeconds(IntervalSeconds); } } }

試したこと

qiitaでそれ関連のことを調べた。

補足情報(FW/ツールのバージョンなど)

緯度経度の取得はできている
直交座標直す計算はわかった
Unity(2019.4.22f1)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。