Trädvy Permalänk
Medlem
Registrerad
Okt 2012

Timer unity c#.

Har ett litet problem, jag håller på att göra ett enklare spel och har problem med timers.( e Nybörjare )
Det enda jag vill göra med en timer är att den skall hålla koll på en bool. Dvs efter Trigger då en bool slåt över till true så skall den räkna ner från 10 och där efter återgå till false.
den skall även ställa tillbaka jumpHeight.

Just nu är jag helt ute o cyklar på allt.

void OnTriggerEnter2D(Collider2D Player) { if (!anim.GetBool("starOne")) { GetComponent<Player>().jumpHeight *= 2; anim.SetBool("starOne", true); Destroy(Player.gameObject); } if (anim.GetBool("starOne")) { timeLeft += 5; Destroy(Player.gameObject); } } void Update () { timeLeft -= Time.deltaTime; if (timeLeft < 0.0f) { anim.SetBool("starOne", false); } } }

dator: Intel Core i5 3570K | Noctua NH-D14 | MSI Z77A-GD65 ATX | Corsair 16GB 1600MHz VENGEANCE LP | XFX Core Edition 850W 80+ Bronze | Corsair Carbide 500R | Sapphire Radeon HD 7970 GHz 3GB | Samsung SSD 840 Series 250GB | 2st. 2TB Seagate Barracuda 7200rpm SATA 6Gbit/s | DVD±RW Samsung 24X DL
Kringutrustning: ASUS MX279H 27" | Microsoft sidewinder x4 | Func MS-3 v2

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Okt 2004

Den andra if-satsen ( if (anim.GetBool("starOne")) ) verkar onödig då starOne alltid kommer att sättas till true i den föregående. Om du vill att Destroy(Player.gameObject) alltid ska köras så kan du lägga den sist annars inom den första if-satsen. Jag gissar också att det ska vara timeLeft = 5, inte += 5.

Det finns säkert ännu effektivare sätt men jag hade nog gjort så här:

void OnTriggerEnter2D(Collider2D Player) { if (!anim.GetBool("starOne")) { GetComponent<Player>().jumpHeight *= 2; anim.SetBool("starOne", true); Destroy(Player.gameObject); endTime = Time.time + 5; } } void Update () { if ((anim.GetBool("starOne")) && (Time.time > endTime)) { anim.SetBool("starOne", false); } } }

Idioter förbokar datorspel.