[Unity4] Имена игровых персонажей над головой
- Создать имя над головой игрока
- Привязать к игроку в мировых координатах
Шаг первый.
Объявим переменную с позиционированием имени над головой игрока, то есть сделаем отступ, а также зададим само имя:public float nameplankahgt = 1f;
public string npc_name = "Игрок";
Выполнено. Теперь в шаге два, мы разберем функцию OnGUI ().
Шаг второй.
Сначала создаем вспомогательную переменную Vector3 с расчетом позиции, для моделирования пространственного вектора, который поможет определить позиции игрока X, Y, Z.Vector3 pos = new Vector3 (transform.position.x, transform.position.y + nameplankahgt, transform.position.z);
Теперь давайте преобразуем координаты выше через новый Vector3 при помощи WorldToScreenPoint в мировую координату:
Vector3 crd = Camera.main.WorldToScreenPoint (pos);
Расчетом позиции по y займемся сейчас. В расчете вы отнимем из Screen.height координаты crd.y:
crd.y = Screen.height - crd.y;
Ну основное из расчетов мы сделали, теперь давайте примем новый стиль нашего текста, в котором укажем цвет, размер и выравнивание:
GUIStyle style = new GUIStyle ();
style.fontSize = 12;
style.normal.textColor = Color.red;
style.alignment = TextAnchor.MiddleCenter;
Теперь одно из самого простого, а также и самого сложного — создание текста. Что тут сложного? Ничего, кроме позиционирования элемента сложного нет. Я просто запутался когда писал:
GUI.Label (new Rect (crd.x - 120, crd.y, 240, 18), npc_name, style);
Спасибо за внимание, с вами был Максим Епихин!
16 комментариев
Что за магические числа?
X позиция, Y позиция, ширина, высота, то что будет отображаться в строке, стиль.
Тогда бы читаемость кода возросла, плюс потом не пришлось бы думать, что это и зачем.