kiltec

Radar.cs

Apr 8th, 2022
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.93 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4.  
  5. public class RadarObject
  6. {
  7.     public Image RadarIcon { get; set; }
  8.     public GameObject Owner { get; set; }
  9. }
  10.  
  11. public class Radar : MonoBehaviour
  12. {
  13.     public Transform playerPos;
  14.     public float mapScale = 2.0f;
  15.  
  16.     public static List<RadarObject> radarObjects = new List<RadarObject>();
  17.  
  18.     public static void RegisterRadarObject(GameObject o, Image i)
  19.     {
  20.         Image image = Instantiate(i);
  21.         radarObjects.Add(new RadarObject() { Owner = o, RadarIcon = image });
  22.     }
  23.  
  24.     public static void RemoveRadarObject(GameObject o)
  25.     {
  26.         List<RadarObject> newList = new List<RadarObject>();
  27.         for (int i = 0; i < radarObjects.Count; i++)
  28.         {
  29.             if(radarObjects[i].Owner == o)
  30.             {
  31.                 Destroy(radarObjects[i].RadarIcon);
  32.                 continue;
  33.             }
  34.             else
  35.             {
  36.                 newList.Add(radarObjects[i]);
  37.             }
  38.         }
  39.         radarObjects.RemoveRange(0, radarObjects.Count);
  40.         radarObjects.AddRange(newList);
  41.     }
  42.  
  43.     private void DrawRadarDots()
  44.     {
  45.         foreach (RadarObject ro in radarObjects)
  46.         {
  47.             Vector3 radarPos = (ro.Owner.transform.position - playerPos.position);
  48.             float distToObject = Vector3.Distance(playerPos.position, ro.Owner.transform.position) * mapScale;
  49.             float delTay = Mathf.Atan2(radarPos.x, radarPos.z) * Mathf.Rad2Deg - 270 - playerPos.eulerAngles.y;
  50.             radarPos.x = distToObject * Mathf.Cos(delTay * Mathf.Deg2Rad) * -1;
  51.             radarPos.z = distToObject * Mathf.Sin(delTay * Mathf.Deg2Rad);
  52.  
  53.             ro.RadarIcon.transform.SetParent(this.transform);
  54.             ro.RadarIcon.transform.position = new Vector3(radarPos.x, radarPos.z, 0) + this.transform.position;
  55.         }
  56.     }
  57.  
  58.     private void Update()
  59.     {
  60.         DrawRadarDots();
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment