Unity Countdown Timer erstellen?
Wie kann ich einen Countdown Timer erstellen der durch einen is Trigger aktiviert bzw pausiert werden kann und am besten auch noch per Befehl zurückgesetzt werden kann?
2 Antworten
Mit is Trigger meinst du Collider.isTrigger?
Einen simplen Timer kannst du mit einem float machen, von dem du deltaTime abziehst. Das ganze mit einer if Abfrage und scgon kannst du auf bools prüfen.
Zum zurücksetzten einfach den float Wert auf den Originalwert setzten.
(Sorry für die Formatierung, bin am Handy)
float timeLeft = 300.0f;
void Update()
{
If (true) //true mit beliebigen bool ersetzten
{
timeLeft -= Time.deltaTime;
if(timeLeft <= 0)
{
//Do Stuff
}
}
}
Du willst den Timer also mit onTriggerEnter und onTriggerExit starten und stoppen?
Du kannst einfach einen bool deklarieren, der bei onTriggerEnter auf true und bei onTriggerExit auf false gesetzt wird. Dann prüfst du beim Timer, ob der bool true ist.
Wenn er false ist, dann läuft der Code und somit der Timer sowieso nicht weiter.
Falls du den Timer in Minuten und Sekunden anzeigen willst, kannst du timeSpan benutzen:
someText.text = TimeSpan.FromSeconds(timeInSeconds).ToString("mm:ss");
hallo soweit habe ich es jetzt geschafft: https://prnt.sc/z996sj
nun 2 fragen 1. wird irgendwie nur einmalig ein wert abgezogen es ist also noch kein countdown und 2. wie machen ich es jetzt das er pausiert bei dem exittrigger? liebe grüße
Mir fällt gerade auf, wenn du den Timer in OnTriggerStay packst müsste der auch ohne bool nur bei Kollision ausgeführt werden
In der Programmiersprache A++ würde es so aussehen:
public Script : Countdown Script(class structure)[
//Auf den Projekttimer zugreifen:
#Timer
new = Variable.name _Timer_
project.Timer = <#Timer>.~Countdown~*projectPlay.whith = ? >> "Count"
|forever[function.ever]
//Man kann die Funktion umbennenen, nur das "function.ever" macht, dass das die //forever funktion ist
|
//Countdown runterzählen:
timer.Timer = Countdown.of"3s"
timer.Timer = Countdown.change.per = second.negative
//"timer.Timer = Countdown.change.per = second.negative" = Countdown per Sekunde //runterzählen
//"timer.Timer = Countdown.change.per = second.positive" = Countdown per Sekunde //aufzählen
if(Countdown = 0){
//Mach etwas
Timer = 0
}
|
]
Danke schon mal doch leider würde ich es soweit in etwa auch schaffen mein Problem liegt er darin den Timer zu stoppen bzw zu starten wenn etwas in einem Bereich gehalten wird. Ich möchte es sozusagen so haben das ich ein Objekt in einem Bereich halten muss worauf hin ( auch grafisch sichtbar) ein Timer runter zählt und wenn das Objekt nicht im Bereich ist der Timer halt auch stoppt. Ich hoffe das hat irgendwie Sinn gemacht und ein Eindruck in meine Ideen gegeben