Problem mit figuranimation

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

schmidtjr

Betreff: Problem mit figuranimation

BeitragDi, Jan 13, 2004 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
kleines projekt für die schule. nen 2 playa fußballspiel, nix besonders gut aussehendes oder so, nur fürn fun. hab mal alles unwichtige als Kommentar gemacht, und nur das nötigste als programm gelassen (spart grafiken und konzentriert auf das wesentliche). so mein problem, die figur hat für jede richtung zwei animationsphasen. alle in einer bmp datei und nun sollen die halt abgespielt werden wenn man die figur in die richtung bewegt. das läuft mit meinem code auch so weit so gut (is bestimmt net der beste code, i know) allerdings spielt er wenn ich nach links laufe und dann schnell nach unten erstmal alle animationen die dazwischen sind ab (also rechts und oben). er soll aber gleich nach unten anim spielen! hm beschreibung is net so doll, deshalb kommt code und animbild, einfach mal ausprobben dann seht ihr ja mein problem (nach links laufen und adnn gleich nach unten)

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
AutoMidHandle 0
;Global background = LoadImage("stadion1.bmp")
AutoMidHandle 1
Global player1 = LoadAnimImage("animloddar.bmp",32,32,0,8)
;Global player2 = LoadAnimImage("animgegner.bmp",32,32,0,8)
TFormFilter 0
ResizeImage player1,64,64
;Global jubellinks = LoadAnimImage("jubellinks.bmp",268,66,0,2)
;Global jubelrechts = LoadAnimImage("jubelrechts.bmp",268,66,0,2)
;Global jubel = 0
;MaskImage jubellinks,255,0,255
;MaskImage jubelrechts,255,0,255
MaskImage player1,255,0,255

;Global frametimeralt=frametimer
;Global frametimeralt2=frametimer
;Global frameju = 0
Global scorep1 = 10, scorep2 = 10
anzeigetext = LoadFont("arial",28,0,0,0)
SetFont anzeigetext
Global x1=400, y1=300
;Global xball, yball
Global x2, y2, framep1, framep2, p1frametimeralt, p1frametimer


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Mainloop @@@@@@@@@@@@@@@@@@@@@@@
While Not KeyHit(1)
;start = MilliSecs()
If KeyHit(203)Then
   framep1 = 0
   p1frametimer = MilliSecs()
ElseIf KeyHit(205)
   framep1 = 2
   p1frametimer = MilliSecs()
ElseIf KeyHit(200)
   framep1 = 4
   p1frametimer = MilliSecs()
ElseIf KeyHit(208)
   framep1 = 6
   p1frametimer = MilliSecs()
EndIf

steuerung()

;If jubel = 1 Then
;   applaus()
;EndIf

drawscreen()
;programin info
;Text 0,0,"frameju: " + frameju
;Text 0,30,"FPS: " + CurFPS#
;CurFPS# = 1000.0 / (MilliSecs() - start)
Flip
Cls   
Wend
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Mainloop end @@@@@@@@@@@@@@@@@@@

Function drawscreen()
;DrawImage background,0,0

;If jubel = 1 Then
;   DrawImage jubellinks,180,60,frameju
;   DrawImage jubelrechts,614,60, 1 - frameju
;Else
;   DrawImage jubellinks,180,60,0
;   DrawImage jubelrechts,614,60,0
;EndIf   
DrawImage player1,x1,y1,framep1
Text 365,32,scorep1,1,0
Text 435,32,scorep2,1,0
End Function

;Function applaus()
;   frametimer= MilliSecs()
;   If frametimeralt + 250 < frametimer Then
;      frametimeralt=frametimer
;      frameju= 1 - frameju
;   EndIf
;   If frametimeralt2 + 3000 < frametimer Then
;      jubel = 0
;   EndIf
;End Function

Function steuerung()
;If KeyHit(36) Then
;   jubel = 1 - jubel
;   frametimeralt2 = MilliSecs()
;EndIf

If KeyDown(203) Then
   x1=x1 - 1.5
   p1frametimer = MilliSecs()
   If p1frametimeralt +90 < p1frametimer Then
      p1frametimeralt = p1frametimer
      framep1 = framep1 + 1
   EndIf
   If framep1 > 1 Then framep1 = 0
   If KeyHit(200)
   framep1 = 4
   p1frametimer = MilliSecs()
   EndIf
EndIf
If KeyDown(205) Then
   x1=x1 + 1.5
   p1frametimer = MilliSecs()
   If p1frametimeralt +90 < p1frametimer Then
      p1frametimeralt = p1frametimer
      framep1 = framep1 + 1
   EndIf
   If framep1 >3 Then framep1 = 2
EndIf
If KeyDown(200) Then
   y1=y1 - 1.5
   p1frametimer = MilliSecs()
   If p1frametimeralt +90 < p1frametimer Then
      p1frametimeralt = p1frametimer
      framep1 = framep1 + 1
   EndIf
   If framep1 >5 Then framep1 = 4
EndIf
If KeyDown(208) Then
   y1=y1 + 1.5
   p1frametimer = MilliSecs()
   If p1frametimeralt +90 < p1frametimer Then
      p1frametimeralt = p1frametimer
      framep1 = framep1 + 1
   EndIf
   If framep1 >7 Then framep1 = 6
EndIf
End Function


und hier bild:
http://schmidtjr2.s3.cybton.com/animloddar.bmp

hoffe auf hilfe, mfg ich

Shogo

BeitragDi, Jan 13, 2004 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs mir mal angesehen. Dein Problem ist wenn du nach rechts läufst ist der wert von framp1, 0 und 1. läufst du dann gleich nach unten ist der werd zwischen 6 und 7 da du immer framep1 = framep1 + 1 machst laufen die animationsschritte 2,3,4 und 5 auch ab.

Habs mal so geändert das es geht

Code: [AUSKLAPPEN]

If KeyDown(208) Then
   y1=y1 + 1.5
   p1frametimer = MilliSecs()
   If p1frametimeralt +90 < p1frametimer Then
      p1frametimeralt = p1frametimer
      framep1 = framep1 + 1
   EndIf
   If framep1 >7 Then framep1 = 6
   if framep1 <> 6 AND framep1 <> 7 THEN framep1 = 6
   ; Ist der frame nicht 6 oder 7 würd er 6
EndIf


Shogo

schmidtjr

BeitragDi, Jan 13, 2004 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Autsch. irgendwie tut es mir immer weh wenn ich seh wie einfach die lösungen sind. ich hab den müll mit dem keyhit zeug probiert, mal wieder falsche herangehensweise.
naja, tausend dank, es funzt prima und die keyhit zeilen kann ich mir nun sparen.
thx

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group