Problem mit der Animation der Spielfigur

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

MechVisor

Betreff: Problem mit der Animation der Spielfigur

BeitragMo, Mai 17, 2004 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho und so.
Ich hab da so ein scheiss Prob -_-
Also meine Spielfigur kann in 8 Richtungen laufen(N,O,S,W,NO,NW,SO,SW). Naja das macht sie auch ganz gut, sie wird auch nur animiert wenn eine der Pfeil-Tasten(Oben,Unten,Links,Rechts) über KeyDown() betätigt wird.
So nun zum eigentlichen Problem, sobald ich 2 oder mehr der Pfeiltasten gleichzeitig drücke(z.B. um die Figur nordwestlich zu bewegen), werden die 2 Animationen die den Pfeiltasten Links und Oben angehören abgespielt. Demzufolge erscheinen natürlich 2 Animationen was ziehmlich Noob aussieht.
Wie kann ich es dann schaffen das wenn 2 Tasten gedrückt werden nur eine Animation abgespielt wird und nicht 2?

Code: [AUSKLAPPEN]

If KeyDown[203] And KeyDown[200] Then
    x = x - 1
    y = y - 1
    DrawImage anim,x,y,frmanim
EndIf


Das funktioniert nicht da dadurch die Tasten exakt zu gleich gedrückt werden müssen. Wer auf die Idee kommt bitte nicht antworten. ^_^

Hier mein Quell-Code:
Code: [AUSKLAPPEN]

;Der Teil sollte bekannt sein.
Graphics 800,600,16,1
SetBuffer BackBuffer()

bild = LoadImage("Chip-Set\testwiese.bmp")
anim = LoadAnimImage("Chip-Set\testanim.bmp",32,32,0,4)
MaskImage anim,255,0,255

If anim = 22035888 Then
x = 384
y = 284
EndIf

Repeat
Cls

TileBlock bild,384,268

;Geschwindigkeit der Animation festlegen   
If MilliSecs() > tmranim + 100 Then
   tmranim = MilliSecs()
   frmanim = (frmanim + 1) Mod 4
EndIf

;Für die Animationen bei Tastendruck, für diesen Test reicht ein und die selbe Animation
;für alle Richtungen aus.
If KeyDown(205) Then
   x = x + 2
   DrawImage anim,x,y,frmanim
EndIf
If KeyDown(203) Then
   x = x - 2
   DrawImage anim,x,y,frmanim
EndIf
If KeyDown(200) Then
   y = y - 2
   DrawImage anim,x,y,frmanim
EndIf
If KeyDown(208) Then
   y = y + 2
   DrawImage anim,x,y,frmanim
EndIf

;Wenn keine der Pfeiltasten gedrückt wurde: Standbild benutzen.
If Not KeyDown(205) Or KeyDown(203) Or KeyDown(200) Or KeyDown(208) Then
   DrawImage anim,x,y
EndIf
   
Flip

Until KeyHit(1)
End


Ich hoffe jemand kann mir helfen.
Control ur mind -_-;;

Gossi

BeitragMo, Mai 17, 2004 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Statt gleich nach den Tastenabfragen das Bild zu zeichnen, könntest du dort erst mal vormerken, in welche Richtung sich der Spieler senkrecht und waagerecht bewegt.

Code: [AUSKLAPPEN]

if keydown(200)
  y=y-2
  hori=-1
  waag=0
endif


Später fragst du diese Variablen ab. z.B. Diagonal nach oben rechts:

Code: [AUSKLAPPEN]

if hori=-1 and waag=1
  ;Deine Animation
elseif hori=.....
elseif .....
elseif ....
endif
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.
 

MechVisor

BeitragMo, Mai 17, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx, werde ich mal ausprobieren und so wie es aussieht müsste das auch eigentlich so klappen, muss aber erstmal jetzt duschen.

btw. Sorry lerne erst seit 3 Tagen, da ich mich mit PHP auskenne komm ich aber schon ziehmlich schnell rein und lerne schnell. Leider fehlt mir oft die logische Antwort :/
Control ur mind -_-;;

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Mai 17, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
muste mit else if
machen
PseudoCode:Code: [AUSKLAPPEN]
Const Hoch  = 200
Const Runter= 208
Const Links = 203
Const Rechts= 205

If  KeyDown(Hoch) And  KeyDown (Rechts) Then
   x = x + 2
   y = y - 2
::Else If  KeyDown(Hoch) And  KeyDown (Links) Then
   x = x - 2
   y = y - 2
::Else If   KeyDown(Runter) And  KeyDown (Rechts) Then
   x = x + 2
   y = y + 2
::Else If   KeyDown(Runter) And  KeyDown (Links) Then
   x = x - 2
   y = y - 2
::Else If  KeyDown(Hoch) Then
   y = y - 2
::Else If  KeyDown(Runter) Then
   y = y + 2
::Else If  KeyDown(Rechts)
   x = x + 2
::Else If  KeyDown(Links)
   x = x - 2
End If

hier muste evt. noch das zeichnen einbauen
[BB2D | BB3D | BB+]
 

MechVisor

BeitragMo, Mai 17, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide Versionen funktionieren. JUHUU! Vielen Dank. Super schnelle Hilfe und wirklich verständliche Antworten gegeben. Super Forum hier! Weiter so Wink
Control ur mind -_-;;

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group