1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System.Linq;
- using UnityEngine;
- namespace InfinityCode.RealWorldTerrain
- {
- public class RealWorldTerrainLookLngLat : MonoBehaviour
- {
- public float distance = 10;
- public float height = 5;
- public float lat;
- public float lng;
- public static bool GetRealWorldPoint(out Vector3 position, double lng, double lat)
- {
- position = new Vector3();
- RealWorldTerrainContainer[] targets = FindObjectsOfType<RealWorldTerrainContainer>();
- RealWorldTerrainContainer target = targets.FirstOrDefault(t => t.Contains(lng, lat));
- if (target == null)
- {
- Debug.Log("Target not found");
- return false;
- }
- return target.GetWorldPosition(lng, lat, out position);
- }
- public static void LookTo(float lng, float lat)
- {
- Vector3 position;
- if (!GetRealWorldPoint(out position, lng, lat)) return;
- Camera.main.transform.LookAt(position);
- }
- public static void MoveTo(float lng, float lat, float distance, float height)
- {
- Vector3 position;
- if (!GetRealWorldPoint(out position, lng, lat)) return;
- Vector3 direction = Camera.main.transform.position - position;
- direction.y = 0;
- Vector3 newPosition = position + direction.normalized * distance;
- newPosition.y += height;
- Camera.main.transform.position = newPosition;
- Camera.main.transform.LookAt(position);
- }
- }
- }
|