Метка OnGUI не остается по центру над GameObject при просмотре с разных расстояний.C#

Место общения программистов C#
Ответить
Anonymous
 Метка OnGUI не остается по центру над GameObject при просмотре с разных расстояний.

Сообщение Anonymous »

Я хочу отобразить индикатор HP, который будет отображаться над GameObject. Я использую OnGUI следующим образом:

Код: Выделить всё

void OnGUI()
{
if (group == null) return;

Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position + Vector3.up * 2.5f);

if (screenPos.z > 0)
{
float hp = group.GetHP();

Color oldColor = GUI.color;
if (hp > 0.6f)
GUI.color = Color.green;
else if (hp > 0.3f)
GUI.color = Color.yellow;
else
GUI.color = Color.red;

GUI.Label(new Rect(screenPos.x - 50, Screen.height - screenPos.y, 100, 20),
$"G{group.groupID}: {hp:P0}");

GUI.color = oldColor;
}
}
Индикатор выглядит центрированным, когда он стоит близко к объекту, но становится смещенным от центра, если смотреть на расстоянии:
Изображение
Я подозреваю, что OnGUI не является правильным подходом для элементов пользовательского интерфейса, привязанных к миру. Как рекомендуется отображать индикатор, который обеспечивает все следующие три пункта?
  • Остается закрепленным над игровым объектом.
  • Естественно масштабируется с расстоянием.
  • Всегда обращен к камере.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ferent-dis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»