Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class RadarObject
- {
- public Image RadarIcon { get; set; }
- public GameObject Owner { get; set; }
- }
- public class Radar : MonoBehaviour
- {
- public Transform playerPos;
- public float mapScale = 2.0f;
- public static List<RadarObject> radarObjects = new List<RadarObject>();
- public static void RegisterRadarObject(GameObject o, Image i)
- {
- Image image = Instantiate(i);
- radarObjects.Add(new RadarObject() { Owner = o, RadarIcon = image });
- }
- public static void RemoveRadarObject(GameObject o)
- {
- List<RadarObject> newList = new List<RadarObject>();
- for (int i = 0; i < radarObjects.Count; i++)
- {
- if(radarObjects[i].Owner == o)
- {
- Destroy(radarObjects[i].RadarIcon);
- continue;
- }
- else
- {
- newList.Add(radarObjects[i]);
- }
- }
- radarObjects.RemoveRange(0, radarObjects.Count);
- radarObjects.AddRange(newList);
- }
- private void DrawRadarDots()
- {
- foreach (RadarObject ro in radarObjects)
- {
- Vector3 radarPos = (ro.Owner.transform.position - playerPos.position);
- float distToObject = Vector3.Distance(playerPos.position, ro.Owner.transform.position) * mapScale;
- float delTay = Mathf.Atan2(radarPos.x, radarPos.z) * Mathf.Rad2Deg - 270 - playerPos.eulerAngles.y;
- radarPos.x = distToObject * Mathf.Cos(delTay * Mathf.Deg2Rad) * -1;
- radarPos.z = distToObject * Mathf.Sin(delTay * Mathf.Deg2Rad);
- ro.RadarIcon.transform.SetParent(this.transform);
- ro.RadarIcon.transform.position = new Vector3(radarPos.x, radarPos.z, 0) + this.transform.position;
- }
- }
- private void Update()
- {
- DrawRadarDots();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment