Всем привет. Такой таск. Когда враг находиться за пределами видимости камеры, нужно отобразить на экране стрелку (Представлена в виде UI элемента), которая будет указывать в его направлении. Пока что есть такой код, который перемещает стрелку в нужную позицию на краю экрана. Можно ли упростить данный код ? Плюс хотелось бы узнать как повернуть стрелку в направлении позиции
P.S Поворот осуществил таким способом
private void RotateToTargetPoint(Transform arrow,Vector3 screenPos, Vector3 target)
{
var dir = target - screenPos;
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
arrow.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
}
var screenPos = _camera.WorldToViewportPoint(enemy.transform.position);
if(screenPos.x >= 0 && screenPos.x <= 1 && screenPos.y >= 0 && screenPos.y <= 1)
{
continue;
}
var onScreenPos = new Vector2(screenPos.x-0.5f, screenPos.y-0.5f)*2;
var max = Mathf.Max(Mathf.Abs(onScreenPos.x), Mathf.Abs(onScreenPos.y));
onScreenPos = (onScreenPos/(max*2))+new Vector2(0.5f, 0.5f);
var screenPoint = _camera.ViewportToScreenPoint(onScreenPos);
RotateToTargetPoint(arrows.transform, screenPos, OnScreenPos);
arrow.position = screenPoint;