KeyPressed Taste nur einmal drücken

Cynric

Aktives Mitglied
Hallo zusammen,

ich habe folgendes Problem:

Ich programmiere gerade einen kleinen 2D-Shooter.
Es gibt verschiedene Waffen, unter anderem eine Pistole. Jetzt habe ich das Problem, dass ich, wenn ich KeyPressed aufrufe, das Programm natürlich die shoot-Methode auch dann ausführt, wenn ich die Taste halte.
Ich hätte es aber gern, dass man bei der Pistole immer einzeln drücken muss, damit der Spieler schießt.
Weiß einer, wie ich das Problem lösen kann?
 

Titanpharao

Bekanntes Mitglied
Ja total einfach.

Mache dir irgendwohin eine booleanvariable "pistelShoot".

Setzte diese auf True, wenn du 1x die shoot Methode gedrückt hast.

Mache shoot-Methode so lange nicht mehr, wie pistelShoot==true.

Setzte die pistelShoot Variable wieder auf False bei KeyReleased für den schieß knopf.

Würde dies aber noch mit einer Art Timer verknüpfen, damit du eine "minimal" Nachladezeit hast.

SOnst bau ich dirn Robot der dieses Spiel sau schnell macht ;)
 

Cynric

Aktives Mitglied
Ja total einfach.

Mache dir irgendwohin eine booleanvariable "pistelShoot".

Setzte diese auf True, wenn du 1x die shoot Methode gedrückt hast.

Mache shoot-Methode so lange nicht mehr, wie pistelShoot==true.

Setzte die pistelShoot Variable wieder auf False bei KeyReleased für den schieß knopf.

Würde dies aber noch mit einer Art Timer verknüpfen, damit du eine "minimal" Nachladezeit hast.

SOnst bau ich dirn Robot der dieses Spiel sau schnell macht ;)

Das mit der Boolean-Variable hab ich eig. schon.
Ich hab bei "KeyPressed" shoot = true und bei "KeyReleased" shoot = false.
Wie genau mach ich das jetz?
Muss ich das mit ner while-Schleife abfangen?

Und wenn ich das mit dem Timer mach, dann hängt sich das ganze Ding auf, solange ich die Shoot-Taste gedrückt halte :(
 
Zuletzt bearbeitet:

Titanpharao

Bekanntes Mitglied
So sieht in etwas der Code dafür aus (nicht lauffähig).

Code:
boolean pistelShoot=false;

keyPressed(){
	if(PISTOLENKEY&&!pistelShoot){
		pistelShoot=true;
		pistoleWirdAbgeschossenMachtEffektSchadenWieAuchImmerMethode();
	}
}

keyReleased(){
	if(PISTOLENKEY){
		pistelShoot=false;
	}
}
 

Titanpharao

Bekanntes Mitglied
Kein Problem^^ für das Timer Problem solltest du dir nun noch selbst was einfallen lassen.

Kurzum halt etwas, was eine maximal Schussfrequenz festlegt.

Sozusagen, nach ersten Schuss, warte ~100ms bis du wieder schießen kannst mit dieser Waffe. ö.ä.

Vergleichs mal mit der Dualy aus CS :D die geht nicht unendlich schnell^^
 

Ähnliche Java Themen

Neue Themen


Oben