Using GPS on a Mobile Device (Android) in Unity

wolfs cry games
wolfs cry games
18 هزار بار بازدید - 5 سال پیش - In this video, you'll learn
In this video, you'll learn how to access GPS data in an Android device when using Unity. It includes instructions for how to request permissions as well as how to display everything on screen.



Here's the code. Since youtube doesnt allow angle brackets, do the following. Change ` to greater than sign. Change ~ to less than sign.

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Android;

public class GPS : MonoBehaviour
{
   public Text gpsOut;
   public bool isUpdating;
   private void Update()
   {
       if (!isUpdating)
       {
           StartCoroutine(GetLocation());
           isUpdating = !isUpdating;
       }
   }
   IEnumerator GetLocation()
   {
       if (!Permission.HasUserAuthorizedPermission(Permission.FineLocation))
       {
           Permission.RequestUserPermission(Permission.FineLocation);
           Permission.RequestUserPermission(Permission.CoarseLocation);
       }
       // First, check if user has location service enabled
       if (!Input.location.isEnabledByUser)
           yield return new WaitForSeconds(10);

       // Start service before querying location
       Input.location.Start();

       // Wait until service initializes
       int maxWait = 10;
       while (Input.location.status == LocationServiceStatus.Initializing && maxWait ` 0)
       {
           yield return new WaitForSeconds(1);
           maxWait--;
       }

       // Service didn't initialize in 20 seconds
       if (maxWait ~ 1)
       {
           gpsOut.text = "Timed out";
           print("Timed out");
           yield break;
       }

       // Connection has failed
       if (Input.location.status == LocationServiceStatus.Failed)
       {
           gpsOut.text = "Unable to determine device location";
              print("Unable to determine device location");
           yield break;
       }
       else
       {
           gpsOut.text = "Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude+100f + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp;
           // Access granted and location value could be retrieved
           print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
       }

       // Stop service if there is no need to query location updates continuously
       isUpdating = !isUpdating;
       Input.location.Stop();
   }
}
5 سال پیش در تاریخ 1398/06/05 منتشر شده است.
18,019 بـار بازدید شده
... بیشتر