Jump to content
Unity Insider Forum

Mehrere Gui-Elemente


FluuuxTechBlog

Recommended Posts

Hallo,

ich habe mehrere Feinde gegen die ich kämpfen muss.

Während ich gegen diese Feinde kämpfe soll Energie von diesen oder wenn ich getroffen werde von mir abgezogen werden.

 

Da es sein kann das gleich mehrere Feinde gleichzeitig bekämpft werden müssen, bringt es mir nichts nur eine Anzeige der Energie angezeigt zu bekommen. Ist es irgendwie möglich die Energieanzeige eines Feindes direkt über dem Feind anzuzeigen?

 

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, ist natürlich möglich. Sowas kann man mit dem GUI-Texture Gameobjekt recht gut machen.

Mach dir ein Prefab, welches die position über dem Kopf des Gegners einnimmt.

Das Prefab besteht aus einem 0 Objekt, welches ein Script hat, um immer zur Kamera zu schauen.

In dem Nullobjekt sind 2 GUI Textures drin. Eines hat die Hintergrundgrafik und Eines zeigt den Lebensbalken.

Natürlich liegt der Lebensbalken etwas vor dem Hintergrund.

Der Lebensbalken wird über die Energie in der Breite gesteuert. Haste volle Energie, ist er 100% breit. Bei halber 50% usw.

Um das zu berechnen und dar zustellen machste das so:

 

var sizefactor = 0.0019;
var positionfactor=0.0037;


private var maxval:float=1.0;
private var nowval:float=1.0;
private var percent:float=0.0;
private var startposition:float=0.0;

function Start(){

startposition= transform.localPosition.x;
maxval=1.0;
nowval=1.0;

}
function Update () {



if (nowval <0.0){
nowval=0.0;
}

percent = nowval / (maxval/100);

transform.localPosition.x = startposition+((100.0-percent)*positionfactor);
transform.localScale.z= (percent*sizefactor);

}
function SetHP(hitpoints:int){
nowval=hitpoints;
}
function SetMAX(maxpoints:int){
maxval =maxpoints;
}

 

Diese 2 Faktoren da oben sind für die Größe und für den 0Punkt da.

Wichtig ist die Position. Da der Pivot immer in der Mitte der Grafik ist, musst du die Mitte nämlich nach links schieben, wenn der Balken kleiner wird und du wills, dass der Balken immer links anfängt.

Sizefactor musst du dir selber ermitteln, ist Abhängig von der Größe der Grafik.

 

Die beiden Funktionen rufe ich von dem Berechnungsscript aus auf und übermittle somit dem Script die Werte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erst mal vielen Dank für Deine ausführliche Antwort.

 

Also ich habe jetzt ein 0 Objekt erstellt und in dieses 2 GUI Texturen rein gepackt.

Daraus habe ich ein Prefab erstellt und dieses als Unterobjekt meinem Charakter hinzugefügt.

Position auf 0, 0, 0 und dieses dann über den Kopf gezogen.

Das Script von Dir habe ich dem 0 Objekt hinzugefügt. das ist doch richtig oder?

Die grafiken für Hintergrund und Energieanzeige habe ich den GUI Texturen vorher hinzugefügt und auch die Größen eingestellt.

 

Leider wird rein gar nichts angezeigt.

Ich habe noch kein Script zum ausrichten der Anzeige in Richtung Kamera.

Aber ich dachte ich könnte schon mal was sehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Script musst du auf den Balken ziehen.

Auf dem 0 Objekt liegt ein Script, welches beim Start nach der Kamera sucht und diese als lookAt Ziel einfügt.

 

Solang du kein Script hast, welches dem Balken die MAX/IST Werte übergibt, wirst du wohl auch nix sehen, denn dann sollte ja alles 0 sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

LookAt sollte reichen.

Wenn du immer noch nix siehst, dann spiel mal mit den Faktoren rum. stell die mal auf ne höhere Zahl oder sogar auf 1 zum testen.

 

Was mir wichtig ist und was ich jetzt mal loswerden will:

Es wird immer gerne ein Script genommen und eingefügt ohne den Sinn dahinter überhaupt zu verstehen. Das ist nicht gut.,

Mein Script ist lediglich eine Hilfe und kein Modul was man einfach so 1zu1 übernehmen kann.

Schaut euch die Dinge an und versucht sie zu verstehen. Dann selber schreiben und den Bedürfnissen anpassen.

Das ist der Weg! Nicht kopieren und sich dann wundern. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was mir wichtig ist und was ich jetzt mal loswerden will:

Es wird immer gerne ein Script genommen und eingefügt ohne den Sinn dahinter überhaupt zu verstehen. Das ist nicht gut.,

Mein Script ist lediglich eine Hilfe und kein Modul was man einfach so 1zu1 übernehmen kann.

Schaut euch die Dinge an und versucht sie zu verstehen. Dann selber schreiben und den Bedürfnissen anpassen.

Das ist der Weg! Nicht kopieren und sich dann wundern. ;)

THIS! Unbedingt zu Herzen nehmen! Und vorallem auch mal ausprobieren. Nicht sofort das Handtuch werfen wenn etwas nicht funktioniert, sondern mal rumprobieren ob es nicht anders funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...