Определение экранных координат объекта - Форум Игроделов
Пт, 31 Май 2024, 01:42 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Определение экранных координат объекта
NapalmRainДата: Вт, 28 Янв 2014, 23:33 | Сообщение # 1
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Доброго всем времени суток.
Необходимо выводить Label c названием объекта, на который смотрит персонаж.
Для определения объекта использую Raycast, далее определяю координаты проекции объекта на камеру и вывожу GUI.Lableb.
Казалось бы, всё просто и понятно, но возникла проблемка, решить которую самостоятельно не вышло, да и справка не помогла, потому что даже не знаю, как правильно искать.
Вот мой код:
Код
void Update () {
   fwd = this.transform.TransformDirection(Vector3.forward);
   if (Physics.Raycast(transform.position, fwd, out hit, 10)) {
    nameObject = hit.transform.name;
   } else {
    nameObject = "";
   }
  }
   
  void OnGUI() {
   if (nameObject!="") {
    if (nameObject!="Terrain") {
     pointOnScreenMin = personCamera.WorldToScreenPoint(hit.collider.gameObject.renderer.bounds.min);
     GUI.Label(new Rect (pointOnScreenMin.x,pointOnScreenMin.y, 120, 20), nameObject);
    }
   }
  }

Проблема состоит в том, что надпись с именем объекта висит вовсе не над ним, как хотелось. а вертикально плавает вместе с наклоном камеры.
Прошу подсказки, как решить данную проблему.
Заранее благодарю за любую подсказку!
 
СообщениеДоброго всем времени суток.
Необходимо выводить Label c названием объекта, на который смотрит персонаж.
Для определения объекта использую Raycast, далее определяю координаты проекции объекта на камеру и вывожу GUI.Lableb.
Казалось бы, всё просто и понятно, но возникла проблемка, решить которую самостоятельно не вышло, да и справка не помогла, потому что даже не знаю, как правильно искать.
Вот мой код:
Код
void Update () {
   fwd = this.transform.TransformDirection(Vector3.forward);
   if (Physics.Raycast(transform.position, fwd, out hit, 10)) {
    nameObject = hit.transform.name;
   } else {
    nameObject = "";
   }
  }
   
  void OnGUI() {
   if (nameObject!="") {
    if (nameObject!="Terrain") {
     pointOnScreenMin = personCamera.WorldToScreenPoint(hit.collider.gameObject.renderer.bounds.min);
     GUI.Label(new Rect (pointOnScreenMin.x,pointOnScreenMin.y, 120, 20), nameObject);
    }
   }
  }

Проблема состоит в том, что надпись с именем объекта висит вовсе не над ним, как хотелось. а вертикально плавает вместе с наклоном камеры.
Прошу подсказки, как решить данную проблему.
Заранее благодарю за любую подсказку!

Автор - NapalmRain
Дата добавления - 28 Янв 2014 в 23:33
AltairДата: Вт, 28 Янв 2014, 23:56 | Сообщение # 2
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
http://wiki.unity3d.com/index.php?title=ObjectLabel
 
Сообщениеhttp://wiki.unity3d.com/index.php?title=ObjectLabel

Автор - Altair
Дата добавления - 28 Янв 2014 в 23:56
NapalmRainДата: Ср, 29 Янв 2014, 00:50 | Сообщение # 3
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Цитата Altair ()
http://wiki.unity3d.com/index.php?title=ObjectLabel

Благодарю. Пока разбирал тот метод, что используется в приведённом скрипте, понял в чём ошибка в моём.
О общем и целом, достаточно добавить к позиции по Y
Код
Screen.height-pointOnScreenMax.y

Благодарю за подсказку.
 
Сообщение
Цитата Altair ()
http://wiki.unity3d.com/index.php?title=ObjectLabel

Благодарю. Пока разбирал тот метод, что используется в приведённом скрипте, понял в чём ошибка в моём.
О общем и целом, достаточно добавить к позиции по Y
Код
Screen.height-pointOnScreenMax.y

Благодарю за подсказку.

Автор - NapalmRain
Дата добавления - 29 Янв 2014 в 00:50
AltairДата: Ср, 29 Янв 2014, 11:08 | Сообщение # 4
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
NapalmRain, не за что))
 
СообщениеNapalmRain, не за что))

Автор - Altair
Дата добавления - 29 Янв 2014 в 11:08
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024