Files
Fishing2/Assets/Infinity Code/Real World Terrain/Scripts/Tools/RealWorldTerrainLookLngLat.cs
2025-06-09 00:11:54 +08:00

51 lines
1.6 KiB
C#

/* INFINITY CODE */
/* https://infinity-code.com */
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 = RealWorldTerrainUtils.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);
}
}
}