Input.location.lastData
に含まれるデータの更新頻度を向上したいです。
iOS上で動作する位置情報ゲームをUnityにて作成しております。
LocationService
を使用して緯度や軽度などのデータを取得しておりますが、現状、Input.location.lastData
に含まれるデータの更新がなかなか行われず、実際の位置との誤差が大きく出てしまいます。
15mほど移動するとInput.location.lastData
が更新されることを確認しておりますが、可能であればそのような移動なしにデータ更新が為されればと思っております。
C#
1using System; 2using System.Timers; 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6 7public class Locations : MonoBehaviour 8{ 9 public double latitude = 0; // 緯度 10 public double longitude = 0; // 経度 11 public double altitude = 0; // 高度 12 public int gps_count = 0; // 位置情報取得回数 13 public string message; // エラーメッセージ 14 15 public float[] interval = {0.0625f, 0.25f, 1.0f}; // [1/16s, 1/4s, 1/1s] 16 public string[] intervalText = {"1/16", "1/4", "1/1"}; 17 public int intervalId = 0; 18 19 private void Start() 20 { 21 // First, check if user has location service enabled 22 if(!Input.location.isEnabledByUser) 23 { 24 Debug.Log("GPS not enabled"); 25 message = "GPS not enabled"; 26 } 27 28 // Start service before querying location 29 Input.location.Start(); 30 31 // Wait until service initializes 32 int maxWait = 15; 33 Timer timer = new Timer(1000); 34 timer.Elapsed += (sender, e) => 35 { 36 if(Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) maxWait--; 37 else timer.Stop(); 38 }; 39 timer.Start(); 40 41 // Service didn't initialize in 20 seconds 42 if(maxWait <= 0) 43 { 44 Debug.Log("Timed out"); 45 message = "Timed out"; 46 } 47 48 // Connection has failed 49 if(Input.location.status == LocationServiceStatus.Failed) 50 { 51 Debug.Log("Unable to determine device location"); 52 message = "Unable to determine device location"; 53 } 54 } 55 56 public void LocationService() 57 { 58 if(Input.location.status == LocationServiceStatus.Running) 59 { 60 latitude = Math.Round(Input.location.lastData.latitude, 7); 61 longitude = Math.Round(Input.location.lastData.longitude, 7); 62 altitude = Math.Round(Input.location.lastData.altitude, 7); 63 gps_count++; 64 } 65 } 66 67 public void IntervalChange() 68 { 69 intervalId = ++intervalId % interval.Length; 70 } 71} 72
試したこと
以下の手段で該当データが更新されることを確認しております。
=====
15mほど移動する。
アプリをタスクキルし、再起動する。
=====
補足情報(FW/ツールのバージョンなど)
unity 2020.3.15f2
なにとぞ、ご教授お願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/29 12:05