Text am Bildschirm einblenden
Hier zeige ich euch mal einige Möglichkeiten auf, wie wir Text durch LUA Code mit Funktionen im Spiel einblenden.
1 Text beim Starten des Levels anzeigen
Text beim Starten des Levels anzeigen
Einblenden eines kurzes Textes beim Starten des Levels wie z.B. in dem "Tutorial" oder "Angkor Wat" Level.
LevelFuncs.OnStart = function()
ShowLegend()
end
function ShowLegend ()
local Legend1 = "The Year 2022, Somewhere in Rome"
local text = DisplayString(Legend1, 500,1000, Color.new(255,255,255))
ShowString(text, 10)
end
Wir erstellen eine normale Funktion mit dem Namen "ShowLegend".
Dann geben wir zwei lokalen Variabeln Namen, hier im Beispiel "Legend1" und "text".
- In die Variable "Legend1" setzen wir den Text "The year 2022, Somewhere in Rome".
- In der Variable "text", legen wir fest, dass wir die Variable "Legend1" unten in der Mitte mit der Farbe Weiß (255,255,255) anzeigen lassen möchten.
- Mit ShowString lassen wir die Variable "text" 10 Sekunden anzeigen.
Zusätzlich setzen wir die Funktion oben in ".OnStart", damit der Text gleich beim Starten angezeigt wird.
ShowLegend()
2 Text während des Spiels anzeigen
Text während des Spiels anzeigen
Eine kurze Textnachricht während dem Spiel anzeigen lassen.
LevelFuncs.PrintText = function ()
local text = "Hurry up. Time is running out!"
local string = DisplayString(text, 500, 500, Color.new(255,255,0))
ShowString(string, 5)
end
Wir erstellen eine "LevelFuncs." Funktion, die wir später mit einem Volume Trigger auslösen können.
Dann geben wir zwei lokalen Variabeln Namen, hier im Beispiel "text" und "string".
- In die Variable "text" setzen wir den Text "Hurry up. Time is running out!".
- In der Variable "string", legen wir fest, dass wir die Variable "text" in der Mitte mit der Farbe Gelb (255,255,0) anzeigen lassen möchten.
- Mit ShowString lassen wir die Variable "string" 5 Sekunden anzeigen.
Dann lassen wir die Funktion "LevelFuncs.PrintText" durch einen Volume Trigger im Spiel auslösen:
3 Text während des Spiels anzeigen mit Argument im Volume Trigger
Text während des Spiels anzeigen mit Argument im Volume Trigger
Hier zeige ich noch eine Möglichkeit, wie ihr individuellen Text in jedem Volume Trigger neu setzen könnt.
Beispiel:
Manchmal hat man einen Standardtext, an den man immer neue Wörter oder Text setzen möchte. z.B.
"Congratulations! You have found..."
Und an diesen Text fügen wir im Volume Trigger neue Wörter hinzu, wenn wir ihn auslösen.
LevelFuncs.PrintTextwithArgument = function (triggerer, arg)
local text = "Congratulations! You have reached the " .. arg
local string = DisplayString(text, 100, 200, Color.new(255,255,255))
ShowString(string, 5)
end
Wir erstellen eine "LevelFuncs." Funktion, die wir später mit einem Volume Trigger auslösen können.
In die Klammer nach "function" setzen wir zwei Argumente:
triggerer - ist ein Verweis auf das Moveable, welches den Trigger auslöst.
arg - ist der Text, den wir im Feld "Argument" im Volume Trigger setzen.
Anmerkung:
Obwohl wir für dieses Beispiel das Argument "triggerer" nicht benötigen, müssen wir es trotzdem definieren und "arg" muss unbedingt als zweites Argument in der Klammer stehen.
Dann geben wir zwei lokalen Variabeln Namen, hier im Beispiel "text" und "string".
- In die Variable "text" setzen wir den Text "Congratulations! You have reached ". Dahinter setzen wir durch zwei Punkte den Platzhalter "arg".
- In der Variable "string", legen wir fest, dass wir die Variable "text" in der Mitte mit der Farbe weiß (255,255,255) anzeigen lassen möchten.
- Mit ShowString lassen wir die Variable "string" 5 Sekunden anzeigen.
Setzen wir nun einen Volume Trigger mit dieser Funktion und schreiben im Feld "Argument" ein Wort oder Text, wird dieses an den vorher definierten Text in der Funktion anhängt.
Bsp.
"Congratulations! You have reached the secret area."
Anmerkung:
Wir können entweder nach dem Text in der Funktion ein Leerzeichen setzen, oder im Feld Argument als erstes. Dadurch klebt der Text, welcher im Feld Argument steht, nicht mit dem aus der Funktion zusammen.
Erstellt ihr nun ein neues Event Set und löst diese Funktion mit einem neuen Volume Trigger aus, könnt ihr nun in dem Feld "Argument" einen neuen Text anschließen.
4 Laras aktuelle Gesundheit in einem Text anzeigen
Laras aktuelle Gesundheit in einem Text anzeigen
Hier zeige ich euch am Beispiel von Laras Gesundheit, wie ihr Werte aus dem Spiel in einen String setzt und diesen in einem Text anzeigt. (Original Script von Kubsy)
LevelFuncs.OnControlPhase = function()
Larahealth ()
end
function Larahealth()
LaraHP = Lara:GetHP()
LaraHPToShow = "Lara's health is: " .. tostring(LaraHP)
ShowLaraHP = DisplayString(LaraHPToShow, 500, 500, Color(255,0,0))
ShowString(ShowLaraHP)
end
Wir erstellen eine normale Funktion mit dem Namen "Larahealth".
Dann geben wir drei lokalen Variabeln Namen, hier im Beispiel "LaraHP", "LaraHPtoShow" und "ShowLaraHP".
- In die Variable "LaraHP" setzen wir die aktuelle Gesundheit von Lara.
- In die Variable "LaraHPToShow" setzen wir den Text "Lara's health is: " zusammen mi der Variable "LaraHP.
- Durch ".. to string()" setzen wir Laras Gesundheit in einen String, den wir anzeigen lassen können.
- In der Variable "ShowLaraHP" setzen wir fest, dass wir die Variable "LaraHPtoShow" in der MItte mit der Farbe Rot (255,0,0) anzeigen lassen möchten.
- Mit "ShowString" lassen wir die Variable "ShowLaraHP" mit den genannten Eigenschaften anzeigen.
Zusätzlich setzen wir die Funktion oben in ".OnControlPhase", damit Laras Gesundheitsanzeige ständig akualisiert wird, wenn sie z.B. bei einem Kampf immer mehr Gesundheit verliert.
Larahealth ()
5 Text genau prozentual positionieren und mit Hintergrundschatten versehen
Seit Version 1.0.2 funktionieren nun endlich auch die Anzeige Optionen "DisplayStringOption.CENTER" für mittig setzen und "DisplayStringOption.SHADOW" für einen Hintergrundschatten. Zusätzlich kann man mit "PercentToScreen(x, y)", den Text genau prozentual positionieren, egal welche Bildschirmgröße der Spieler benutzt.
LevelFuncs.DisplayString = function ()
local halfwayX, halfwayY = PercentToScreen(50, 50)
TextToShow = "This is the first Text in the middle of the screen!"
ShowText = DisplayString(TextToShow, halfwayX, halfwayY, Color(255,255,0), false, {DisplayStringOption.SHADOW, DisplayStringOption.CENTER})
ShowString(ShowText)
end
- Bei Text mit deutschen Umlauten wie "ö", "ä", "ü" vorsichtig sein, bei mir ist das Spiel abgestürzt. Besser hier dann die Varianten "oe", "ae" und "ue" nehmen.
- Text wird immer vom letzten Wort von "rechts" nach "links" horizontal positioniert. Deswegen ist der nummerische Zahlenwert 500 für die Mitte des Bildschirmes nicht immer genau.