Загрузка данных


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);
    }
}