Waittimer "friert" komplettes Spiel ein?
Übersicht

LukioBetreff: Waittimer "friert" komplettes Spiel ein? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen, habe schon länger mit Blitz3D ganz kleine Dinge gemacht und mich entschieden BlitzMax anzuschauen, da es OOP zulässt und auch sonst sinnvoller ist (Strict Mode etc.)
Da einiges anders ist, habe ich das Beginners Tutorial von Wave durchgelesen. Nun wollte ich den Asteroids Shooter etwas erweitern, teilweise klappt das ganz gut, nur möchte ich jetzt eine "Nachladen" Funktion haben - wenn ich diese ausführe, friert das ganze Spiel für die Dauer der Repeatschleife ein. Wenn Ammo=0 dann wird Reload() aufgerufen. Code: [AUSKLAPPEN] Function Reload() Local reloadtimer:TTimer=CreateTimer( 10 ) Repeat Ammo:+1 Reloading=1 WaitTimer(reloadtimer) Until Ammo = 50 Reloading=0 EndFunction Ist das anders lösbar bzw. wie kann man das im Zusammenhang mit WaitTimer vermeiden? |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guck dir mal Millisecs() an, das ist es was du brauchst. Die Timer sind zum begrenzen der FPS gedacht | ||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
Lukio |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sprich sowas wie das?
Code: [AUSKLAPPEN] Function Reload()
If Not MilliSecs()>GlobalTimer+Reloadtime Reloading=1 Ammo:+1 Else Ammo=50 Reloading=0 Endfunction Habe ja zb. die verschiedenen Schussfrequenzen auch über MilliSecs gelöst, mal schauen. Bleibt denn das auch so bei umfangreicheren Projekten oder ist es da sinnvoller einen eigenen Zeitimpuls zu machen ?(DeltaTime habe ich schon drin damit alles schön gleichmässig läuft, das kannte ich schon von Blitz3D ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Anstatt überall "händisch" die Timer mit Millisecs rein zu schreiben, verwende ich einen Timer-Type der das automatischer macht.
Zeitimpuls?! |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Lukio |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Xeres hat Folgendes geschrieben: Anstatt überall "händisch" die Timer mit Millisecs rein zu schreiben, verwende ich einen Timer-Type der das automatischer macht.
Zeitimpuls?! Impulse, Heartbeat, Keepalive es gibt verschiedene Anwendungen und Bezeichnungen. Anstatt Milliseconds (Laufzeit des PCs) eine Laufzeit die mit Beginn der Ausführung anläuft und zb. dann auch im 10s Takt oder Minutentakt Events auslösen kann. Eventuell geht das ja ganz bequem wenn man den Timer als Type nutzt? Alle 10s: Code: [AUSKLAPPEN] While Impulse(10) = TRUE
Textdraw "10s vorbei",20,20 Bumm() Wend Alle 60s: Code: [AUSKLAPPEN] While Impulse (60) = TRUE Textdraw "1 Minute vorbei, 20,20 MehrBumm() Wend |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das läuft bei mir alles unter dem Begriff Timer - und lässt sich ganz toll mit einem Type verarbeiten.
Codetechnisch aber eher: Code: [AUSKLAPPEN] If MeinTimer.Check() Then
Print "Ding!" End If Schleifen laufen so lange, bis sie abgebrochen werden - nicht gut für einmalige Events. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group