powerfun-unity/Assets/Scripts/Scenes/Ride/Scripts/MiniMapPlayerController.cs
2021-09-02 10:08:46 +08:00

52 lines
2.0 KiB
C#

using Mapbox.Unity.Map;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts
{
public class MiniMapPlayerController: MonoBehaviour
{
private AbstractPlayer _player;
private AbstractMap _map;
RectTransform RectRoot;
GameObject arrow;
Camera _minicamera;
CyclingController cyclingController { get; set; }
GameObject uipanel { get; set; }
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
uipanel = cyclingController.GetUIPanel();
_map = transform.parent.Find("MiniMap").GetComponent<AbstractMap>();
_minicamera = transform.parent.Find("MiniCamera").GetComponent<Camera>();
RectRoot = uipanel.transform.Find("MiniMap/MiniMap").GetComponent<RectTransform>();
var parent = uipanel.transform.Find("MiniMap/MiniMap");
arrow = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/MiniArrow"), parent);
}
public void SetController(AbstractPlayer player)
{
_player = player;
}
float t = 1f;
private void Update()
{
t -= Time.deltaTime;
while (t < 0)
{
if (_player != null)
{
transform.localPosition = _map.GeoToWorldPosition(_player.Currentlatlong);
var tr = arrow.GetComponent<RectTransform>();
Vector2 vp2 = _minicamera.WorldToViewportPoint(transform.localPosition);//将三维物体的世界坐标转换为视口坐标
tr.anchoredPosition = new Vector2((vp2.x * RectRoot.sizeDelta.x) - (RectRoot.sizeDelta.x * 0.5f), (vp2.y * RectRoot.sizeDelta.y) - (RectRoot.sizeDelta.y * 0.5f));
}
else
{
DestroyImmediate(arrow);
//DestroyImmediate(gameObject);
}
t = 1;
}
}
}
}