Laufen,Stehen,Richtungswechsel
Übersicht BlitzBasic Beginners-Corner
MogeeGastBetreff: Laufen,Stehen,Richtungswechsel |
Mo, Okt 04, 2004 1:52 Antworten mit Zitat |
|
---|---|---|
Hi Bin neu hier im Forum (Na ja ganz so neu Bin ich nicht... stöbere schon seit Wochen in diesem Forum rum und habe schon viele Threats gelesen)... ABER ich hab so kleine Problemchen die ich nit ganz so gefunden hab -und da dachte ich mir, fang ich doch mal an selbst n Threat zu schreiben. (fragen kostet ja... noch... nix)
Also hier ist ein Code der hier im Forum schon Zig-tausend-mal durchgekaut wurde: -Animation bei Tastendruck- Code: [AUSKLAPPEN] DrawImage hero,X,Y,frame If KeyDown (205) Then X=X+5 If MilliSecs() > timer+80 Then timer = MilliSecs() frame = frame +1 If frame => 7 Then frame =1 EndIf EndIf If KeyDown (203) Then X=X-5 If MilliSecs() > timer+80 Then timer = MilliSecs() frame = frame +1 If frame => 14 Then frame =8 EndIf EndIf Meine Figur hat 14 Frames wobei 0 für rechts stehenbleiben und 7 für links ist (deswegen habe ich die Frames beim Tastendruck von 7 wieder zurück auf 1 (von 14 zurück auf 8 gesetzt) -weil des ja nur die laufani ist- Wenn ich links drücke fängt der frame bei 0 an -leuchtet mir ein, da ich ja nicht gesagt habe er soll bei Tastendruck beim 7ten Frame anfangen- Ich hab das auch probiert und machmal klappt das ja auch durch rumprobieren aber das gibt dann einen ganz unsauberen Quellencode, der Speicherfressend ist. Also 1. frage ich euch, wie man das machen kann, dass die Figur beim linken Tastendruck bei Frame 7 anfängt (Wahrscheinlich total simpel und nur n Denkfehler meinerseits) 2.okay das geht ja noch... aber wie schaffe ich es, dass die Figur beim Tasten-nicht-drücken (auch wenn die frames noch nit runtergezählt wurden) wieder auf die 0 (bei linkstdrück auf 7) zurückfällt. Mit Code: [AUSKLAPPEN] If Not KeyDown (205) And frame =< 7 Then frame = 0
klappt das schon ganz gut aber leider nicht in der Zusammenarbeit von KeyDown (203) ... genauso wie mit Code: [AUSKLAPPEN] If Not KeyDown (205) Then frame =0 wenn ich des jetzt mit der Linkstaste auch mache bleiben sie stehen...(is eigentlich auch ganz logisch wenn man sich des durch den Kopf gehen lässt und den Text anguckt aber irgendwie *verzweifel*)
Na ja ich hoffe ihr wisst so in etwa was ich meine und könnt mich in die richtige Denkrichtung lenken... Ihr habt mir bei so vielen Codes schon geholfen und des nur indem ihr von anderen die Fragen beantwortet habt! Danke Mo |
||
Gast |
Mo, Okt 04, 2004 9:30 Antworten mit Zitat |
|
---|---|---|
Ungefähr so:
Code: [AUSKLAPPEN] DrawImage hero,X,Y,frame
If keyhit(205) Then frame=1 Endif If KeyDown (205) Then X=X+5 If MilliSecs() > timer+80 Then timer = MilliSecs() frame = frame +1 If frame => 7 Then frame =1 EndIf EndIf If keyhit(203) Then frame=8 Endif If KeyDown (203) Then X=X-5 If MilliSecs() > timer+80 Then timer = MilliSecs() frame = frame +1 If frame => 14 Then frame =8 EndIf EndIf |
||
Mo |
Mo, Okt 04, 2004 15:09 Antworten mit Zitat |
|
---|---|---|
Hi... äh Gast...
Danke für den Tipp... aber warum funzt des jetzt wenn ich nochmal ne If-schleife mit Keyhit mache (gut bei Keydown würde frame = 8 immer sein)... kann ich das nicht irgendwie unkomplizierter in Select - Case Befehle eingeben... oder in nem Dim-Feld speichern.... ...weil die Figur später mehrere Befehle ausführen soll z.B ducken,springen,schlagen u.s.w Wenn ich das jetzt fortsetze mit If Keydown (...) und es kommen noch einige Befehle dazu, ist das dann nicht speicherfressend? (Sorry hab vergessen mich einzuloggen -Mogee bin ich auch-) Mo |
||
Egon Dragon |
Mo, Okt 04, 2004 16:45 Antworten mit Zitat |
|
---|---|---|
Erstmal sorry! Ich hab vergessen mich da oben einzuloggen
Das ist ganz einfach: Wenn du die pfeiltaste gedrückt hällst, springt die Variable "frame" wegen KeyHit() erst einmal auf die gewünschte zahl z.B: 8 Wenn du jetzt noch andere anims reinbauen willst kannst du es ja genauso machen. z.B. Code: [AUSKLAPPEN] If Keyhit(57) ;<--Wenn Leertaste kurz gedrückt wird... frame=15 ;<--frame krigt sofort den Wert 15 EndIf If Keydown(57) If MilliSecs() > timer+80 Then timer = MilliSecs() frame = frame +1 If frame => 15+AnimFrameanzahl Then frame =15:EndIf Endif Endif |
||
Mo |
Mo, Okt 04, 2004 18:04 Antworten mit Zitat |
|
---|---|---|
Achso... toll wieder was dazugelernt
Mo |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group