前提
Unityでスマホ用位置ゲーを作っています。
その中で、コルーチンを用いて3秒ごとに端末の緯度経度から二点間の移動距離を算出して、目標距離から減算していく後述のような処理を書いています。
そこで毎回コルーチン実行時に端末位置を保持して、次回実行時に前回の端末位置(3秒前の端末の位置)と現在の端末位置を用いたいのですが、ループ時に前回の端末位置が上書きされてしまわないような書き方が分からないです。
また初回実行時は3秒前の端末位置に現在位置を代入する必要があると思うので、併せてその処理も知りたいです。
初心者ゆえ、分かりにくい文章かもしれませんが何卒よろしくお願いします。
あとこれはちょっとした疑問なのですが、位置情報を用いる場合コルーチンとUpdateメソッドで消費電力や負荷は大きく異なりますか?
実現したいこと
・毎回のコルーチン実行時の端末位置保持
・コルーチン実行時、前回実行時に保持した端末位置(3秒前の端末位置)と現在の端末位置を同時に用いる方法
・初回実行時のみ3秒前の端末位置に現在位置を代入する方法
該当のソースコード
C#
1public class Distance : MonoBehaviour 2{ 3 public UnityEngine.UI.Text text; 4 //目標距離までの残り距離 5 public int remainingDistance; 6 7 void Start() 8 { 9 Input.location.Start(); 10 remainingDistance = 1000; 11 StartCoroutine(GetDistance()); 12 } 13 14 private IEnumerator GetDistance() 15 { 16 while (true) 17 { 18 //端末の緯度経度 19 LocationInfo locationInfo = Input.location.lastData; 20 Location deviceLocation = new Location(locationInfo.latitude, locationInfo.longitude); 21 22 //距離(メートル) 引数の緯度経度から二点間の距離を求める処理 23 //Aの部分に前回コルーチン実行時の位置情報を代入したいです 24 int distance = (int)NaviMath.LatlngDistance(deviceLocation, A) * 1000; 25 26 this.remainingDistance -= distance; 27 //更新 28 text.text = string.Format("残り{0}m", this.remainingDistance); 29 //現在位置情報を保持する処理を書く 30 31 // 32 yield return new WaitForSeconds(3); 33 34 if(this.remainingDistance <= 0) 35 { 36 break; 37 } 38 } 39 40 } 41}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/15 04:35