using UnityEngine;
using UnityEngine.UI;
public class NavigationArrow : MonoBehaviour
{
public RoutineManager routeManager;
public Transform player; // Transform игрока
public RectTransform arrowRect;
public Image arrowImage;
private Camera mainCamera;
void Start()
{
mainCamera = Camera.main;
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;
// получаем направление от игрока к цели
Vector3 directionToTarget = targetPosition - player.position;
// игнорируем высоту (Y) для 2D направления
directionToTarget.y = 0;
// получаем направление вперед игрока
Vector3 playerForward = player.forward;
playerForward.y = 0;
// вычисляем угол между направлением игрока и направлением к цели
float angle = Vector3.SignedAngle(playerForward, directionToTarget, Vector3.up);
// поворачиваем стрелку
arrowRect.rotation = Quaternion.Euler(0, 0, -angle);
}
}