1 Tastendruck= 1 Schlag
Übersicht

![]() |
rambo256Betreff: 1 Tastendruck= 1 Schlag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi leute,also hier erst mal mein Code (Die Animationsarrays hab ich weggelassen,sowie die Grafikenladenanweisungen und so!),den hab ich auch neu geschrieben und mein system zu letztes Mal verändert,hab jetzt alles in arrays abgespeichert,vorteile:
1. ist erweiterbar (einfacher ohne großen aufwand) 2. übersichtlicher und kleinerer code hier ist nun die Hauptschleife: Code: [AUSKLAPPEN] ;Hauptschleife
Repeat Cls WaitTimer(frametimer) ; Hintergrund zeichnen For o = 0 To 4 DrawImage Wiese1,o*175,526 DrawImage Wald_Baume,o*253,365 Next ; Tastenabfragen If KeyDown(Key_rechts)=0 And KeyDown(key_links)=0 And KeyDown(key_angriff)=0 And KeyDown(Key_shift)=0 Then keys=0 Else keys=1 EndIf If KeyDown(key_rechts) Then richtung=1 player_x = player_x+speed EndIf If KeyDown(key_links) Then richtung=-1 player_x = player_x-speed EndIf If KeyDown(key_angriff)=1 Then attack=1 ; Atmung ;rechts If Richtung=1 And keys=0 Then e = e+1 If e=frametimer_atmen Then i=i+1 DrawImageRect Player_Davis(0,0),Player_x,Player_y,Player_Davis(1,i)*80,Player_Davis(1,6)*80,80,80 If i >= Player_Davis(1,7) Then i=0 If e >= frametimer_atmen Then e=0 EndIf ;links If Richtung=-1 And keys=0 Then e = e+1 If e=frametimer_atmen Then i=i+1 DrawImageRect Player_Davis(0,1),Player_x,Player_y,Player_Davis(2,i)*80,Player_Davis(2,6)*80,80,80 If i >= Player_Davis(2,7) Then i=0 If e >= frametimer_atmen Then e=0 EndIf ; rennen ;rechts If Richtung=1 And KeyDown(key_rechts)=1 And KeyDown(key_angriff)=0 Then e = e+1 If e=frametimer_rennen Then i=i+1 DrawImageRect Player_Davis(0,0),Player_x,Player_y,Player_Davis(3,i)*80,Player_Davis(3,6)*80,80,80 If i >= Player_Davis(3,7) Then i=0 If e = frametimer_rennen Then e=0 EndIf ;links If Richtung=-1 And KeyDown(key_links)=1 And KeyDown(key_angriff)=0 Then e = e+1 If e=frametimer_rennen Then i=i+1 DrawImageRect Player_Davis(0,1),Player_x,Player_y,Player_Davis(4,i)*80,Player_Davis(4,6)*80,80,80 If i >= Player_Davis(4,7) Then i=0 If e = frametimer_rennen Then e=0 EndIf ;schlagen,normale attacke ;rechts If Richtung=1 And KeyDown(key_shift)=0 And KeyDown(key_rechts)=0 And KeyDown(key_angriff)=1 Then e =e+1 If e=frametimer_schlagen Then i=i+1 If i>= Player_Davis(5,9) Then i=0 If e >= Frametimer_schlagen Then e=0 DrawImageRect Player_Davis(0,0),Player_x,player_y,Player_Davis(5,i)*80,player_Davis(5,8)*80,80,80 EndIf ;links If Richtung=-1 And KeyDown(key_angriff) And KeyDown(key_shift)=0 And KeyDown(key_links)=0 Then e =e+1 If e=frametimer_schlagen Then i=i+1 If i>= Player_Davis(6,9) Then i=0 If e >= Frametimer_schlagen Then e=0 DrawImageRect Player_Davis(0,1),Player_x,player_y,Player_Davis(6,i)*80,player_Davis(6,8)*80,80,80 EndIf ;schlagen,spezial attacke nr.1 ;rechts If Richtung=1 And KeyDown(key_angriff) And KeyDown(key_rechts) Then e =e+1 If e=frametimer_schlagen Then i=i+1 If i>= Player_Davis(7,9) Then i=0 If e >= Frametimer_schlagen Then e=0 DrawImageRect Player_Davis(0,4),Player_x,player_y,Player_Davis(7,i)*80,player_Davis(7,8)*80,80,80 EndIf ;links If Richtung=-1 And KeyDown(key_angriff) And KeyDown(key_links) Then e =e+1 If e=frametimer_schlagen Then i=i+1 If i>= Player_Davis(8,9) Then i=0 If e >= Frametimer_schlagen Then e=0 DrawImageRect Player_Davis(0,5),Player_x,player_y,Player_Davis(8,i)*80,player_Davis(8,8)*80,80,80 EndIf Flip Until KeyDown(1) Nun zu meinem Problem: Ich will erreichen,das ich nur einmal auf die schlagtaste zu drücken brauch,um die schlaganimation 1 mal durchlaufen zu lassen. hab da mir schon was überlegt,mit einer attack=true variable zu arbeiten,aber das will nicht wirklich klappen,entweder muss ich trotzdem die Taste gedrückt halten,oder ich drück einmal die Taste,aber jetzt spielt er die Ani unendlich oft ab. Wäre sehr dankbar für eure Vorschläge!!! THX |
||
MasterK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
attack-taste drücken -> variable true setzen
wenn die variable true ist, die animation abspielen und das drücken der attack-taste nicht abfragen (bzw nicht beachten), sobald die animation abgespielt wurde, variable wieder false setzen |
||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
genau das hab ich ja probiert nur irgendwie funzt es nicht,schreib ma bitte nen Beispielcode (nur einen kleinen) wie du das meinst und binde den mal in mein prog ein,also bei der schlaganimation,normal
Wäre nett THX |
||
girgl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] if keyhit(schlag)
ATTACK=True endif if Attack=true ANIMATION ABSPIELEN ATTACK=False endif ... |
||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
habs gemacht,aber der wiederholt immer alles. | ||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;schlagen,normale attacke
;rechts If Richtung=1 And KeyDown(key_shift)=0 And attack=1 Then e =e+1 If e =frametimer_schlagen Then i=i+1 If e >= Frametimer_schlagen Then e=0 If i >= Player_Davis(5,9) Then attack=0 i=0 EndIf DrawImageRect Player_Davis(0,0),Player_x,player_y,Player_Davis(5,i)*80,player_Davis(5,8)*80,80,80 EndIf Mein Prob liegt bei dieser Zeile: Code: [AUSKLAPPEN] If i >= Player_Davis(5,9) Then
attack=0 i=0 EndIf da setz ich ja attack auf 0 aber auch i auf 0,da i=0 is => attack belibt 1,da i ja kleiner Player_Davis(5,9) ist.Wie kann ich nun diese Zeile ändern,dass i auf 0 gestellt wird und gleichzeitig attack auf 0 gesetzt wird? THX |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group