Laufen,Stehen,Richtungswechsel

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Mogee

Gast

Betreff: Laufen,Stehen,Richtungswechsel

BeitragMo, 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

BeitragMo, 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

BeitragMo, Okt 04, 2004 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Okt 04, 2004 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal sorry! Ich hab vergessen mich da oben einzuloggen Embarassed

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
[/quote]

Mo

BeitragMo, Okt 04, 2004 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso... toll wieder was dazugelernt Very Happy

Mo

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group