PragmaGames
@PragmaGames
Увлекаюсь Unity.

Как стрелкой показать направление до врага?

Всем привет. Такой таск. Когда враг находиться за пределами видимости камеры, нужно отобразить на экране стрелку (Представлена в виде 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;
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы