// MIT License // https://gitlab.com/ilnprj // Copyright (c) 2020 ilnprj using UnityEngine; namespace RadarComponents { /// /// Item view for Horizontal target on compass /// public class HorizontalTargetView : BaseTargetView { [SerializeField] private Color arrowIn = Color.white; [SerializeField] private Color arrowOut = Color.clear; private float minSize; private float maxSize; private void Start() { iconTarget.rectTransform.anchoredPosition = new Vector2(0, 0); maxSize = iconTarget.rectTransform.sizeDelta.x; minSize = maxSize / 2; iconTarget.preserveAspect = true; UpdateViewTarget(); } /// /// Method calls then target or player moving /// public override void UpdateViewTarget() { float posX = locator.CameraPlayer.WorldToScreenPoint(targetTransform.position).x; float center = Screen.width / 2; Vector3 forward = locator.CameraPlayer.transform.TransformDirection(Vector3.forward); Vector3 toOther = targetTransform.position - Camera.main.transform.position; if (Vector3.Dot(forward, toOther) < 0) posX = 0; float minPos = center - rootTransform.sizeDelta.x / 2; float maxPos = center + rootTransform.sizeDelta.x / 2; posX = Mathf.Clamp(posX, minPos, maxPos); posX = center - posX; iconTarget.rectTransform.anchoredPosition = new Vector2(-posX, 0); // Color Color tmp = Color.Lerp(arrowIn, arrowOut, Mathf.Abs(posX) / (rootTransform.sizeDelta.x / 2)); iconTarget.color = tmp; // Distance float dis = Vector3.Distance(playerTransform.position, targetTransform.position); float size = maxSize - dis / 4; //TODO: Change size with distance size = Mathf.Clamp(size, minSize, maxSize); UpdateExtensions(); } } }