Cum se face o bară de viață și un cadru de selectare a caracterelor

Prompt, vă rog.
Fac strategia o întrebare cu privire la modul de a face o bandă de viață asupra personajelor de pe hartă și a cadrului de selecție în jurul lor.
Sunt două moduri: 1 adăugați un cadru și o bandă la obiect și rotiți-o în raport cu unghiul camerei, dar aici problema suprapunerii prin obiecte mai apropiate și calculul unghiului de rotație.






2 mod de a adăuga textura adecvată la onGui, dar aici apare întrebarea despre locația corectă față de obiectele de pe hartă.
Există idee cum să faceți acest lucru sau exemple de implementare?

Nu există nici un bine și rău, totul în această lume este relativ.

Dragon rideR a scris: Prompt vă rog.
Fac strategia o întrebare cu privire la modul de a face o bandă de viață asupra personajelor de pe hartă și a cadrului de selecție în jurul lor.
Sunt două moduri: 1 adăugați un cadru și o bandă la obiect și rotiți-o în raport cu unghiul camerei, dar aici problema suprapunerii prin obiecte mai apropiate și calculul unghiului de rotație.
2 mod de a adăuga textura adecvată la onGui, dar aici apare întrebarea despre locația corectă față de obiectele de pe hartă.
Există idee cum să faceți acest lucru sau exemple de implementare?

utilizând UnityEngine;
utilizând System.Collections;

clasa NPC publică. MonoBehaviour
# 123;
float public nameplankahgt = 1f;
șir public npc_name = "[NPC] Merchant Fish";
bool privat esteVisble = false;

void OnGUI # 40; # 41;
# 123;
dacă # 40; GameLogic. mainUser! = null # 41; # 123;
float dst = Vector3. distanță # 40; transformare. poziție. GameLogic. mainUser. transformare. poziție # 41; ;

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

Vector3 pos = Vector3 nou # 40; transformare. poziție. x. transformare. poziție. y + nameplankahgt, transformare. poziție. z # 41; ;
Vector3 crd = Camera. principal. WorldToScreenPoint # 40; pos # 41; ;
crd. y = Ecran. înălțime - crd. y;

GUIStyle style = new GUIStyle # 40; # 41; ;
stil. fontSize = 12;
stil. font = GuiProcessor. geti. rusfont;
stil. normale. textColor = Culoare. cian;






stil. alignment = TextAnchor. MiddleCenter;
//style.fontStyle = FontStyle.Italic;

//GUI.DrawTexture (noul Rect (crd.x - 100, crd.y, 200, 20), GameInterface.getI.NamePlanka);
GUI. etichetă # 40; nou Rect # 40; crd. x-120, crd. y. 240, 18 # 41;. npc_name, stil # 41; ;
# 125;
# 125;
# 125;
# 125;

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

public bool checkVisible # 40; # 41;
# 123;
returnează GeometryUtility. TestPlanesAABB # 40; GeometryUtility. CalculateFrustumPlanes # 40; Camera. principal # 41;. transformare. gameObject. Collider. hotar # 41; ;
# 125;
# 125;

Dezvoltatorul Atom de pescuit - Pescuitul pentru un plutitor, Donka, zbura de pescuit, lingura in perioada post-nuclear.
Dezvoltator Atom Fishing II - Primul MMO 3D despre pescuit

Dragon rideR a scris: Prompt vă rog.
Fac strategia o întrebare cu privire la modul de a face o bandă de viață asupra personajelor de pe hartă și a cadrului de selecție în jurul lor.
Sunt două moduri: 1 adăugați un cadru și o bandă la obiect și rotiți-o în raport cu unghiul camerei, dar aici problema suprapunerii prin obiecte mai apropiate și calculul unghiului de rotație.
2 mod de a adăuga textura adecvată la onGui, dar aici apare întrebarea despre locația corectă față de obiectele de pe hartă.
Există idee cum să faceți acest lucru sau exemple de implementare?

utilizând UnityEngine;
utilizând System.Collections;

clasa NPC publică. MonoBehaviour
# 123;
float public nameplankahgt = 1f;
șir public npc_name = "[NPC] Merchant Fish";
bool privat esteVisble = false;

void OnGUI # 40; # 41;
# 123;
dacă # 40; GameLogic. mainUser! = null # 41; # 123;
float dst = Vector3. distanță # 40; transformare. poziție. GameLogic. mainUser. transformare. poziție # 41; ;

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

Vector3 pos = Vector3 nou # 40; transformare. poziție. x. transformare. poziție. y + nameplankahgt, transformare. poziție. z # 41; ;
Vector3 crd = Camera. principal. WorldToScreenPoint # 40; pos # 41; ;
crd. y = Ecran. înălțime - crd. y;

GUIStyle style = new GUIStyle # 40; # 41; ;
stil. fontSize = 12;
stil. font = GuiProcessor. geti. rusfont;
stil. normale. textColor = Culoare. cian;
stil. alignment = TextAnchor. MiddleCenter;
//style.fontStyle = FontStyle.Italic;

//GUI.DrawTexture (noul Rect (crd.x - 100, crd.y, 200, 20), GameInterface.getI.NamePlanka);
GUI. etichetă # 40; nou Rect # 40; crd. x-120, crd. y. 240, 18 # 41;. npc_name, stil # 41; ;
# 125;
# 125;
# 125;
# 125;

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

public bool checkVisible # 40; # 41;
# 123;
returnează GeometryUtility. TestPlanesAABB # 40; GeometryUtility. CalculateFrustumPlanes # 40; Camera. principal # 41;. transformare. gameObject. Collider. hotar # 41; ;
# 125;
# 125;

Mulțumesc! Și după 2 ani acest exemplu ajută







Articole similare

Trimiteți-le prietenilor: