using UnityEngine;
using UnityEngine.UI;
public class NavigationArrow : MonoBehaviour
{
[SerializeField] RoutineManager routeManager;
[SerializeField] Transform player; // Transform игрока
[SerializeField] RectTransform arrowRect;
[SerializeField] Image arrowImage;
void Start()
{
if (arrowImage == null)
arrowImage = GetComponent<Image>();
if (arrowRect == null)
arrowRect = GetComponent<RectTransform>();
}
void Update()
{
if (routeManager == null || routeManager.CurrentTarget == null)
{
//arrowImage.enabled = false;
return;
}
arrowImage.enabled = true;
UpdateArrowDirection();
}
void UpdateArrowDirection()
{
Vector3 targetPosition = routeManager.CurrentTarget.position;
Debug.Log(routeManager.CurrentTarget.name);
// получаем направление от игрока к цели
Vector3 directionToTarget = targetPosition - player.position;
// игнорируем высоту (Y) для 2D направления
directionToTarget.y = 0;
// вычисляем угол между направлением игрока и направлением к цели
float angle = Vector3.SignedAngle(Vector3.right, directionToTarget, Vector3.up);
// поворачиваем стрелку
arrowRect.rotation = Quaternion.Euler(0, 0, -angle);
Debug.DrawRay(player.position, directionToTarget.normalized * 5, Color.red);
}
}