meine Animationen bleiben hängen!
Übersicht BlitzBasic Allgemein
rambo256Betreff: meine Animationen bleiben hängen! |
Do, März 04, 2004 15:44 Antworten mit Zitat |
|
---|---|---|
ALso ich habe folgendes Problem:
Mal läuft alles perfekt,d.h. meine Animationen bleiben nicht hängen. Doch plötzlich bleiben sie ohne Grund einfach hängen.Ich habe aber keinen blassen Schimmer warum. Bitte helft mir,es kann nur am Code liegen und nicht an den Bildern!!! Code: [AUSKLAPPEN] ;Variabeln
Global r = 1 ; Richtung (1 = rechts, -1 = links) Global g = 0 ; Gangart (stehen = 0;laufen = 1;rennen = 2) Global player_x = 200 Global player_y = 500 Global frame = 0 Global frame2 = 6 Global frame3 = 4 Global frame4 = 5 Global frame5 = 3 Global frame6 = 6 Global frame7 = 0 Global frame8 = 8 Global frame9 = 0 Global frame10 =9 Global speed = 2 Global frame_timer = 10 Global frame_timer_schlag = 6 Global rechts = 32 Global links = 30 Global angriff = 34 Global shift = 42 Global speedp = 78 Global speedm = 74 Global attack = 0 Global w=0 frametimer = CreateTimer(60); oldtime = MilliSecs() ;Grafiken laden Graphics(800,600,32,0) SetBuffer BackBuffer() Davis_img_r = LoadImage("grafiken\davis_0_r.bmp") ; Davis_img_r laden MaskImage Davis_img_r, 0,0,0 Davis_img_l = LoadImage("grafiken\davis_0_l.bmp") ; Davis_img_l laden MaskImage Davis_img_l, 0,0,0 Davis_img1_r = LoadImage("grafiken\davis_1_r.bmp") ; Davis_img_r laden MaskImage Davis_img1_r, 0,0,0 Davis_img1_l = LoadImage("grafiken\davis_1_l.bmp") ; Davis_img_l laden MaskImage Davis_img1_l, 0,0,0 Davis_img2_r = LoadImage("grafiken\davis_2_r.bmp") ; Davis_img_r laden MaskImage Davis_img2_r, 0,0,0 Davis_img2_l = LoadImage("grafiken\davis_2_l.bmp") ; Davis_img_l laden MaskImage Davis_img2_l, 0,0,0 Wald_Baume = LoadImage("grafiken\forest.bmp") Wiese1 = LoadImage("grafiken\land1.bmp") Wiese2 = LoadImage("grafiken\land2.bmp") Wiese3 = LoadImage("grafiken\land3.bmp") Wiese4 = LoadImage("grafiken\land4.bmp") ; Sounds laden Davis_pfuh = LoadSound("sounds\059.wav") Davis_Ja = LoadSound("sounds\095.wav") Trippel1 = LoadSound("sounds\003.wav") Trippel2 = LoadSound("sounds\004.wav") ;Beginn der Hauptschleife Repeat Cls WaitTimer(frametimer) Color 255,0,0 Text 5,50,"g:"+g Text 5,58,"frame_timer: "+frame_timer Text 5,63,"angriff: "+KeyDown(angriff) Text 5,68,"attack: "+attack ;Tastenabfragen For o = 0 To 4 DrawImage Wiese1,o*175,526 DrawImage Wald_Baume,o*253,365 Next If KeyDown(rechts) And KeyDown(links)=0 Then r=1 g=1 l=1 speed = 2 If g = 1 And attack = 0 Then player_x = player_x+speed EndIf If KeyDown(links) And KeyDown(rechts)=0 Then r=-1 g=1 l=1 speed = 2 If g = 1 And attack = 0 Then player_x = player_x-speed EndIf If KeyDown(rechts)=0 And KeyDown(links)=0 Then r=r g=0 speed = 2 EndIf If KeyDown(angriff) And KeyDown(shift)=0 Then attack = 1 EndIf If KeyDown(angriff) And KeyDown(shift) Then attack = 2 EndIf If KeyDown(shift)=1 And r=1 Then r=r g=2 speed = 3 player_x = player_x+speed EndIf If KeyDown(shift)=1 And r=-1 Then r=r g=2 speed = 3 player_x = player_x-speed EndIf If KeyDown(rechts) And KeyDown(links) Then l=0 ; animation im zustand = stehend ; rechts If r = 1 And g = 0 And KeyDown(angriff) = 0 And KeyDown(shift) = 0 And attack=0 Then If i = frame_timer And frame = 0 Then frame = frame+1 i = 0 EndIf If i = frame_timer And frame = 1 Then frame= frame+1 i = 0 EndIf If i = frame_timer And frame = 2 Then frame = frame+1 i = 0 EndIf If i = frame_timer And frame = 3 Then frame = 0 i = 0 EndIf i = i+1 DrawImageRect Davis_img_r,player_x,player_y,frame*80,0*80,80,80 EndIf ; links If r = -1 And g = 0 And KeyDown(angriff) = 0 And KeyDown(shift) = 0 And attack=0 Then If i = frame_timer And frame2 = 6 Then frame2 = frame2+1 i = 0 EndIf If i = frame_timer And frame2 = 7 Then frame2 = frame2+1 i = 0 EndIf If i = frame_timer And frame2 = 8 Then frame2 = frame2+1 i = 0 EndIf If i = frame_timer And frame2 = 9 Then frame2 = 6 i = 0 EndIf i = i+1 DrawImageRect Davis_img_l,player_x,player_y,frame2*80,0*80,80,80 EndIf ; Animation im Zustand = gehen/laufen ;rechts If r = 1 And g=1 And KeyDown(angriff)=0 And KeyDown(shift)=0 And attack=0 And l=1Then If i = frame_timer And frame3 = 4 And w=0 Then frame3 = frame3+1 i = 0 w=0 EndIf If i = frame_timer And frame3 = 5 And w=0Then frame3= frame3+1 i = 0 w=0 EndIf If i = frame_timer And frame3 = 6 And w=0Then frame3 = frame3+1 i = 0 w=0 EndIf If i = frame_timer And frame3 = 7 And w=0Then frame3 = 5 w = 1 i = 0 EndIf If i = frame_timer And frame3 = 5 And w =1 Then frame3= frame3-1 i = 0 w=1 EndIf If i = frame_timer And frame3 = 4 And w=1Then frame3= frame3+1 i = 0 w=0 EndIf i = i+1 DrawImageRect Davis_img_r,player_x,player_y,frame3*80,0*80,80,80 EndIf ;links If r=-1 And g=1 And KeyDown(angriff)=0 And KeyDown(shift)=0 And attack=0 And l=1 Then If i = frame_timer And frame4 = 5 And w=0 Then frame4 = frame4-1 i = 0 EndIf If i = frame_timer And frame4 = 4 And w=0 Then frame4= frame4-1 i = 0 EndIf If i = frame_timer And frame4 = 3 And w=0 Then frame4 = frame4-1 i = 0 EndIf If i = frame_timer And frame4 = 2 And w=0 Then frame4 = 4 i = 0 w=1 EndIf If i = frame_timer And frame4 = 4 And w = 1 Then frame4= frame4+1 i = 0 w=1 EndIf If i = frame_timer And frame4 = 5 And w=1Then frame4= frame4-1 i = 0 w=0 EndIf i = i+1 DrawImageRect Davis_img_l,player_x,player_y,frame4*80,0*80,80,80 EndIf ; Animation im Zustand: rennen ;rechts If r = 1 And KeyDown(shift) = 1 And attack=0 Then If i = frame_timer And frame7 = 1 And w=0 Then frame7= frame7-1 i = 0 w=0 EndIf If i = frame_timer And frame7= 0 And w=0Then frame7= frame7+1 i = 0 w=1 EndIf If i = frame_timer And frame7 = 1 And w=1Then frame7 = frame7+1 i = 0 w=0 EndIf If i = frame_timer And frame7 = 2 And w=0Then frame7 = frame7-1 w = 0 i = 0 EndIf i = i+1 DrawImageRect Davis_img_r,player_x,player_y,frame7*80,2*80,80,80 EndIf ;links If r = -1 And KeyDown(shift) = 1 And attack=0 Then If i = frame_timer And frame8 = 8 And w=0 Then frame8= frame8+1 i = 0 w=0 EndIf If i = frame_timer And frame8= 9 And w=0Then frame8= frame8-1 i = 0 w=1 EndIf If i = frame_timer And frame8 = 8 And w=1Then frame8 = frame8-1 i = 0 w=0 EndIf If i = frame_timer And frame8 = 7 And w=0Then frame8 = 8 w = 0 i = 0 EndIf i = i+1 DrawImageRect Davis_img_l,player_x,player_y,frame8*80,2*80,80,80 EndIf ; 1.Schlaganimation ;rechts If r = 1 And attack=1 And KeyDown(shift)=0 Then If i = frame_timer_schlag And frame5 = 3 Then frame5 = frame5+1 i = 0 EndIf If i = frame_timer_schlag And frame5 = 4 Then frame5= frame5+1 i = 0 EndIf If i = frame_timer_schlag And frame5 = 5 Then frame5 = frame5+1 i = 0 EndIf If i = frame_timer_schlag And frame5 = 6 Then frame5 = frame5+1 w = 0 i = 0 EndIf If i = frame_timer_schlag And frame5 = 7 Then frame5= 0 i = 0 EndIf If i = frame_timer_schlag And frame5 = 0 Then frame5 = frame5+1 i = 0 EndIf If i = frame_timer_schlag And frame5 = 1 Then frame5 = frame5+1 w = 0 i = 0 EndIf If i = frame_timer_schlag And frame5 = 2 Then frame5= 3 i = 3 attack = 0 EndIf i = i+1 DrawImageRect Davis_img_r,player_x,player_y,frame5*80,1*80,80,80 EndIf ;links If r = -1 And attack = 1 And KeyDown(shift) = 0 Then If i = frame_timer_schlag And frame6 = 6 Then frame6 = frame6-1 i = 0 EndIf If i = frame_timer_schlag And frame6 = 5 Then frame6= frame6-1 i = 0 EndIf If i = frame_timer_schlag And frame6 = 4 Then frame6 = frame6-1 i = 0 EndIf If i = frame_timer_schlag And frame6 = 3 Then frame6 = frame6-1 i = 0 EndIf If i = frame_timer_schlag And frame6 = 2 Then frame6= 9 i = 0 EndIf If i = frame_timer_schlag And frame6 = 9 Then frame6 = frame6-1 i = 0 EndIf If i = frame_timer_schlag And frame6 = 8 Then frame6 = frame6-1 w = 0 i = 0 EndIf If i = frame_timer_schlag And frame6 = 7 Then frame6= 6 i = 3 attack = 0 EndIf i = i+1 DrawImageRect Davis_img_l,player_x,player_y,frame6*80,1*80,80,80 EndIf ; 2.Schlaganimation : im rennen ; rechts If r=1 And attack = 2 Then If i = frame_timer_schlag And frame9 = 0 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 1 Then frame9 = frame9+1 i = 0 PlaySound Davis_pfuh PlaySound Davis_ja EndIf If i = frame_timer_schlag And frame9 = 2 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 3 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 4 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 5 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 6 Then frame9 = frame9+1 i = 0 EndIf If i = frame_timer_schlag And frame9 = 7 Then frame9 = 0 i = 0 attack=0 EndIf i = i+1 DrawImageRect Davis_img2_r,player_x,player_y,frame9*80,3*80,80,80 EndIf ;links If r=-1 And attack = 2 Then If i = frame_timer_schlag And frame10 = 9 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 8 Then frame10 = frame10-1 i = 0 PlaySound Davis_pfuh PlaySound Davis_ja EndIf If i = frame_timer_schlag And frame10 = 7 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 6 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 5 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 4 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 3 Then frame10 = frame10-1 i = 0 EndIf If i = frame_timer_schlag And frame10 = 2 Then frame10 = 9 i = 0 attack=0 EndIf i = i+1 DrawImageRect Davis_img2_l,player_x,player_y,frame10*80,3*80,80,80 EndIf Flip Until KeyHit(1) |
||
rambo256 |
Do, März 04, 2004 19:30 Antworten mit Zitat |
|
---|---|---|
Um euch zu helfen,Der bleibt dann immer beim ersten frame von der ani hängen,aber auch nur manchmal.Ich weiß echt nicht warum!! | ||
Michi1988 |
So, März 07, 2004 1:31 Antworten mit Zitat |
|
---|---|---|
Ehrlich.
Ich hatte kein Boclk mir den ganzen scheiß durchzulesen. so unübersichtlich würde ich auch nichts wieder finden. So komme ich zu meiner Frage. SOLL DA NUR EINE ANIMATION ABLAUFEN? Der Progger |
||
AvaGast |
So, März 07, 2004 1:51 Antworten mit Zitat |
|
---|---|---|
Ich würd ja gern versuchen, Dir irgendwie zu helfen... aber... der Michi hat wirklich recht, das ist echt übel...
Versuch mal den Code von der Länge her auf ein Zehntel maximal zu verkürzen, dass sollte eigentlich für eine simple Animation mehr als ausreichend sein. |
||
Julz |
So, März 07, 2004 10:39 Antworten mit Zitat |
|
---|---|---|
Außerdem wäre es nett wenn du mal die grafiken uploaden würdest dann könnten wir den code auch testen | ||
Vertex |
So, März 07, 2004 12:30 Antworten mit Zitat |
|
---|---|---|
solch ein code sollte doch eigentlich nur bei db zu finden sein oO
Nemen wir mal an, Du hast eine Bild mit einer Animation das in etwa so aufgebaut ist: Zitat: ################
Also eine Route repräsentiert ein Bild bzw. ein Frame dieser Animation. Es existieren hier 16 Frames die sagen wir mal immer 20 * 30 Pixel groß sind. Dann lädst Du sie ersteinmal so: Code: [AUSKLAPPEN] Animation = LoadAnimImage("Animation.png", 20, 30, 0, 16)
Jetzt geht die Attacke von Frame 0 bis Frame 7 und das Laufen von Frame 8 bis Frame 15. Also schreibst Du Dir hierfür Konstanten: Code: [AUSKLAPPEN] Const AttackStart = 0 : Const AttackEnd = 7
Const RunStart = 8 : Const RunEnd = 15 Hier jetzt die Hauptschleife in der Du die Animation anzeigst. Code: [AUSKLAPPEN] FrameStart = RunStart : FrameEnd = RunEnd
While Not KeyDown(1) Cls If KeyHit(203) Then FrameStart = AttackStart : FrameEnd = AttackEnd If KeyHit(205) Then FrameStart = RunStart : FrameEnd = RunEnd Frame = Frame+1 ; prüfen, ob Framecounter nicht das Ende der Animationssequenz überschreitet If Frame>FrameEnd Then Frame = FrameStart DrawImage Animation, 0, 0, Frame Flip Wend Wenn Du die linke Pfeiltaste drückst, dann wird immer die Attack-Animation abgespielt, wenn Du die Rechte drückst dann die Laufanimation. mfg olli |
||
vertex.dreamfall.at | GitHub |
rambo256 |
So, März 07, 2004 16:06 Antworten mit Zitat |
|
---|---|---|
danke,aber ich hab das proggi mal meinem freund gegeben und der hat komischerweise überhaupt keine Fehler.Er hat auch das gleiche BB,aber bei mi läuft es trrotzdem nicht ganz ordentlich.
@ Vertex,thx,aber ich weiß schon wie man so etwas macht Also ich werde den Code mal dann nochmal ganz von neu schreiben müssen,wennes geklappt hat,dann poste ich mal das ergebnis.... @ all,danke für eure Mühe |
||
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group