HorizontalTargetView.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // MIT License
  2. // https://gitlab.com/ilnprj
  3. // Copyright (c) 2020 ilnprj
  4. using UnityEngine;
  5. namespace RadarComponents
  6. {
  7. /// <summary>
  8. /// Item view for Horizontal target on compass
  9. /// </summary>
  10. public class HorizontalTargetView : BaseTargetView
  11. {
  12. [SerializeField]
  13. private Color arrowIn = Color.white;
  14. [SerializeField]
  15. private Color arrowOut = Color.clear;
  16. private float minSize;
  17. private float maxSize;
  18. private void Start()
  19. {
  20. iconTarget.rectTransform.anchoredPosition = new Vector2(0, 0);
  21. maxSize = iconTarget.rectTransform.sizeDelta.x;
  22. minSize = maxSize / 2;
  23. iconTarget.preserveAspect = true;
  24. UpdateViewTarget();
  25. }
  26. /// <summary>
  27. /// Method calls then target or player moving
  28. /// </summary>
  29. public override void UpdateViewTarget()
  30. {
  31. float posX = locator.CameraPlayer.WorldToScreenPoint(targetTransform.position).x;
  32. float center = Screen.width / 2;
  33. Vector3 forward = locator.CameraPlayer.transform.TransformDirection(Vector3.forward);
  34. Vector3 toOther = targetTransform.position - Camera.main.transform.position;
  35. if (Vector3.Dot(forward, toOther) < 0) posX = 0;
  36. float minPos = center - rootTransform.sizeDelta.x / 2;
  37. float maxPos = center + rootTransform.sizeDelta.x / 2;
  38. posX = Mathf.Clamp(posX, minPos, maxPos);
  39. posX = center - posX;
  40. iconTarget.rectTransform.anchoredPosition = new Vector2(-posX, 0);
  41. // Color
  42. Color tmp = Color.Lerp(arrowIn, arrowOut, Mathf.Abs(posX) / (rootTransform.sizeDelta.x / 2));
  43. iconTarget.color = tmp;
  44. // Distance
  45. float dis = Vector3.Distance(playerTransform.position, targetTransform.position);
  46. float size = maxSize - dis / 4;
  47. //TODO: Change size with distance
  48. size = Mathf.Clamp(size, minSize, maxSize);
  49. UpdateExtensions();
  50. }
  51. }
  52. }