if (keys[VK_SPACE]) and (lastshot<(scstart/timerfreq*1000)-1000) then
begin
shoot(dragonposx,dragonposy+100,1);
lastshot:=scstart/timerfreq*1000;
end;
die variable "lastshot" beinhaltet die millisekunden seit programmstart. das ganze sollte nun dafür sorgen dass man einen cooldown von 1 sekunde hat, ist aber nicht so, er schiesst durchgehend.
mein 2. prob wäre, wenn ich nach obenlinks steuere dann kann ich nicht gleichzeitig schiessen, bzw wenn ich schiesse dann kann ich nicht nach oben-links steuern sondern nur nach oben oder links:
Code:
if (keys[VK_LEFT]) and (dragonposx>-304) then dragonposx:=dragonposx-(dragonmove*timefactor);
if (keys[VK_UP]) and (dragonposy<204) then dragonposy:=dragonposy+(dragonmove*timefactor);
if (keys[VK_DOWN]) and (dragonposy>-204) then dragonposy:=dragonposy-(dragonmove*timefactor);
if (keys[VK_RIGHT]) and (dragonposx<304) then dragonposx:=dragonposx+(dragonmove*timefactor);
andere diagonale richtungen gehen aber mit schiessen
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Schuss :
Weiss jetzt nicht genau wie deine Timer funktionieren, aber im Normafall realisiert man eine Tastenverzögerung so :
Code:
if(keys[VK_SPACE])and(lastshoot <=0)then
begin
Fire;
lastshot :=1000;
end;
...
lastshot:= lastshot - X * TimeFactor;
if lastshot < 0then
lastshot :=0;
@Tasten :
So wie du das gemacht hast, müsste das eigentlich gehen. Aber ich tippe hier auf eine Limitation von Seiten deiner Tastatur, denn je nach Tastatur bzw. Hersteller gibt es da bestimmte Situationen, die nicht so funzen wie erwartet.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.