Як зробити смугу життя і рамку виділення персонажів

Підкажіть будь ласка.
Роблю стратегію постало питання як зробити смужку життя над персонажами на карті і рамку виділення навколо них.
Уявляю 2 способи: 1 додати рамку і смужку до об'єкту і повертати її щодо кута камери, але тут проблема перекривання ближчими об'єктами і розрахунок кута повороту.
2 спосіб додавання в onGui відповідної текстури, але тут постає питання коректного розташування щодо об'єктів на карті.
Є якісь небудь ідеї як це зробити або приклади реалізації?

Немає добра і зла, все в цьому світі відносно.

Dragon rideR писал (а): Підкажіть будь ласка.
Роблю стратегію постало питання як зробити смужку життя над персонажами на карті і рамку виділення навколо них.
Уявляю 2 способи: 1 додати рамку і смужку до об'єкту і повертати її щодо кута камери, але тут проблема перекривання ближчими об'єктами і розрахунок кута повороту.
2 спосіб додавання в onGui відповідної текстури, але тут постає питання коректного розташування щодо об'єктів на карті.
Є якісь небудь ідеї як це зробити або приклади реалізації?

using UnityEngine;
using System.Collections;

public class NPC. MonoBehaviour
# 123;
public float nameplankahgt = 1f;
public string npc_name = "[NPC] Скупник риби";
private bool isVisble = false;

void OnGUI # 40; # 41;
# 123;
if # 40; GameLogic. mainUser! = null # 41; # 123;
float dst = Vector3. Distance # 40; transform. position. GameLogic. mainUser. transform. position # 41; ;

if # 40; dst <10f ) {
if # 40; isVisble # 41; # 123;

Vector3 pos = new Vector3 # 40; transform. position. x. transform. position. y + nameplankahgt, transform. position. z # 41; ;
Vector3 crd = Camera. main. WorldToScreenPoint # 40; pos # 41; ;
crd. y = Screen. height - crd. y;

GUIStyle style = new GUIStyle # 40; # 41; ;
style. fontSize = 12;
style. font = GuiProcessor. getI. rusfont;
style. normal. textColor = Color. cyan;
style. alignment = TextAnchor. MiddleCenter;
//style.fontStyle = FontStyle.Italic;

//GUI.DrawTexture (new Rect (crd.x - 100, crd.y, 200, 20), GameInterface.getI.NamePlanka);
GUI. Label # 40; new Rect # 40; crd. x - 120, crd. y. 240, 18 # 41 ;. npc_name, style # 41; ;
# 125;
# 125;
# 125;
# 125;

void Update # 40; # 41;
# 123;
isVisble = checkVisible # 40; # 41; ;

public bool checkVisible # 40; # 41;
# 123;
return GeometryUtility. TestPlanesAABB # 40; GeometryUtility. CalculateFrustumPlanes # 40; Camera. main # 41 ;. transform. gameObject. collider. bounds # 41; ;
# 125;
# 125;

Розробник Atom Fishing - Риболовля на поплавок, донку, нахлист, блешню в пост'ядерний період.
Розробник Atom Fishing II - Перша 3D MMO про риболовлю

Dragon rideR писал (а): Підкажіть будь ласка.
Роблю стратегію постало питання як зробити смужку життя над персонажами на карті і рамку виділення навколо них.
Уявляю 2 способи: 1 додати рамку і смужку до об'єкту і повертати її щодо кута камери, але тут проблема перекривання ближчими об'єктами і розрахунок кута повороту.
2 спосіб додавання в onGui відповідної текстури, але тут постає питання коректного розташування щодо об'єктів на карті.
Є якісь небудь ідеї як це зробити або приклади реалізації?

using UnityEngine;
using System.Collections;

public class NPC. MonoBehaviour
# 123;
public float nameplankahgt = 1f;
public string npc_name = "[NPC] Скупник риби";
private bool isVisble = false;

void OnGUI # 40; # 41;
# 123;
if # 40; GameLogic. mainUser! = null # 41; # 123;
float dst = Vector3. Distance # 40; transform. position. GameLogic. mainUser. transform. position # 41; ;

if # 40; dst <10f ) {
if # 40; isVisble # 41; # 123;

Vector3 pos = new Vector3 # 40; transform. position. x. transform. position. y + nameplankahgt, transform. position. z # 41; ;
Vector3 crd = Camera. main. WorldToScreenPoint # 40; pos # 41; ;
crd. y = Screen. height - crd. y;

GUIStyle style = new GUIStyle # 40; # 41; ;
style. fontSize = 12;
style. font = GuiProcessor. getI. rusfont;
style. normal. textColor = Color. cyan;
style. alignment = TextAnchor. MiddleCenter;
//style.fontStyle = FontStyle.Italic;

//GUI.DrawTexture (new Rect (crd.x - 100, crd.y, 200, 20), GameInterface.getI.NamePlanka);
GUI. Label # 40; new Rect # 40; crd. x - 120, crd. y. 240, 18 # 41 ;. npc_name, style # 41; ;
# 125;
# 125;
# 125;
# 125;

void Update # 40; # 41;
# 123;
isVisble = checkVisible # 40; # 41; ;

public bool checkVisible # 40; # 41;
# 123;
return GeometryUtility. TestPlanesAABB # 40; GeometryUtility. CalculateFrustumPlanes # 40; Camera. main # 41 ;. transform. gameObject. collider. bounds # 41; ;
# 125;
# 125;

Дякуємо! І через 2 роки цей приклад допомагає

Схожі статті