Problem mit figuranimation
Übersicht

![]() |
schmidtjrBetreff: Problem mit figuranimation |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group