Animationen in 2 Richtungen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Dom

Betreff: Animationen in 2 Richtungen

BeitragDo, Jul 29, 2004 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich möchte bei meinen Spiel, das man nach links laufen soll und die Spiel Figur auch Animiert wird.
Dafür habe ich folgendes Bild:
[img]www.code-freaks.de/anim_laeuft.bmp[/img]
Die Animationspahsen 0-4 für Rechts laufen, und die phasen 5-9 für nach links laufen.
Danach lade ich das Bild:
Code: [AUSKLAPPEN]

anim_laeuft = LoadAnimImage("grafik\anim_laeuft.bmp", 96,96, 0, 9) ; die Laufanimation laden

Nun schonmal erstes problem: bwohl es 10 grafiken in dem bild sind, sagt der wenn ich 10 frames beim laden eintrage:
Not enough frames in bitmap. Das ist aber ncith das hauptproblem. Nun möchte ich mit die figur animieren:
Code: [AUSKLAPPEN]

If KeyDown(KEY_RIGHT) Then  ; wenn die PfeilRechts Taste gedrückt wurde
playerX = playerX + playerSpeed ; setzt die X position um Playerspeed Pixel weiter nach rechts.
richtung = 1 ; die Richtung auf 1 setzten ( 1 = Nach rechtschauend, 0 = nach links schauend. Wichtig für die Schüsse und die Animation)
If ZaehlStart + 150 < MilliSecs() Then ; alle 1,5 sek eine neue AnimationsGrafik zeichnen
frame = frame + 1
If frame = 4 Then ; wenn alle Animationspahasen durch sind
 frame = 0 ; gehe wieder zur ersten Animationspahse
Zaehlstart = MilliSecs()
EndIf
EndIf
EndIf
If KeyDown(KEY_LEFT) Then ; wenn die PfeilLinks Taste gedrückt wurde
playerX = playerX - playerSpeed ; setzt die X position um Playerspeed Pixel weiter nach Links.
richtung = 0 ; die Richtung auf 1 setzten ( 1 = Nach rechtschauend, 0 = nach links schauend. Wichtig für die Schüsse und die Animation)
If ZaehlStart + 150 < MilliSecs() Then ; alle 1,5 sek eine neue AnimationsGrafik zeichnen
frame = frame + 1
If frame = 9 Then ; wenn alle Animationspahasen durch sind
 frame = 5 ; gehe wieder zur ersten Animationspahse
Zaehlstart = MilliSecs()
EndIf
EndIf
EndIf

So weit so gut, wenn ich mich aber erst nach rechts und dann nach Links bewege, dann kommt der Fehler Image out of Range. Das hänge wahrscheinlich damit zusammen das ich bei der 2ten Animation als Startframe 5 (weil es ja erst ab dem 5ten Animationsbild anfängt) angeben muss. Ich weiß aber nicht wie. Kann mir vielleicht jemand helfen?
Achja: Ich habe bereits die Suche benutzt, leider war in den Threads meistens nur beschrieben wie man sich in eine Richtung animiert bewegt ):
  • Zuletzt bearbeitet von Dom am Do, Jul 29, 2004 14:10, insgesamt einmal bearbeitet

rambo256

BeitragDo, Jul 29, 2004 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Aalso:
Soweit ich weiß,sind da nur 9 Frames drin,denn: BB zählt den ersten Frame immer als den o-ten Frame.
Ändere das dann entsprechend um,dann is auch der Startframe des nach links laufenden Männchens 4!
Asus F53z

Das Leben ist eine reine Konkatenation...
 

Dom

BeitragDo, Jul 29, 2004 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh mit der 0 stimmt, aber: Rechtes Männchen: 0 - 1 - 2 - 3 - 4 = 5 Phasen
Das nach Links laufende Männchen müsste also doch trozdem startnummer 5 haben O_o ( 5 - 6 - 7 - 8 - 9 - )

rambo256

BeitragDo, Jul 29, 2004 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
*autsch*
klar!
probiers einfach so wie du zuletzt sagtest aus.
Asus F53z

Das Leben ist eine reine Konkatenation...
 

Dom

BeitragDo, Jul 29, 2004 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
habe jetzt das Aktuelle im ersten beitrag reineditiert. Problem weiterhin:
ich drücke nach rechts: es wird nur die rste Animationspahse für nach rechts gehen und die letzte angezeigt. Wenn ich dann nach links drücke, gleiches problem mit der nach links animation. Wenn ich dann wieder nach rechts drücke kommt wieder Image out of range ):

Tobchen

BeitragDo, Jul 29, 2004 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Ahnung, ob dir das wirklich hilft, aber hier habe ich ein tolles Beispiel, bei dem man viel lernen kann.
http://home.arcor.de/zaidot/Pacci.rar
Da wird ein Bild geladen, dass 2 Frames pro Richtung hat. Mit Pfeil-Rechts und Pfeil-Links bewegt man sich.
Tobchen - die Welt von Tobi!

soli

BeitragDo, Jul 29, 2004 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube du solltest <= und >= benutzen.

Dein Zähler ist beim nach links gehen auf 9 oder so,
dann drückst du "rechts" es wird addiert, das Ergebnis ist natürlich
größer als 4, kann aber nicht auf 0 gesetzt werden,
und das Spiel crasht.
solitaire

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Jul 29, 2004 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du gar nicht mehr weiter weist, würde ich dir empfehlen, die Bilder in zwei verschieden Bilddatein zu packen:
Ein mal die nach links und einmal die nach rechts.
Das müsste das Problem auch lösen.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Markus2

BeitragDo, Jul 29, 2004 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt auch noch DebugLog oder laß dir das Frame wo du hin gehen
willst im Fenster anzeigen ...
 

Dom

BeitragDo, Jul 29, 2004 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
So mit Tobi's beispiel geht, danke trozdem noch mal an alle.
 

blitzblaster

BeitragSo, Aug 01, 2004 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
also es geht auch mit etwas weniger Code wegen der Anim.

Beispiel:

vor die Hauptschleife:

player=LoadAnimImage(player.png),96,96,0,9

in die Hauptschleife:

frame=millisecs()/100 mod 9

....
....
....

Drawimage player,x,y,frame

mehr muss man in Bezug auf die Anim nicht schreiben, finde ich.

Gruß Blitzblaster
 

blitzblaster

BeitragSo, Aug 01, 2004 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
upps habe gerade festgestellt, dass das bei verschiedenen Animationen innerhalb einer .png so Problemen entstehen. Das ist jetzt bei mir der Fall.
Hmm ich muss wohl auch auf diese Weise meine Anim machen.

@ Kabelbinder: Das habe ich mal eben versucht mit 2 verschiedenen Grafiken. Also die eine GFX für links und die andere für rechts. Das Problem war, dass man ja irgendeine Grafik als Hauptgrafik nehmen muss. Wenn ich jetzt z.B. die eine Grafik als erstes lade, wo de Player rechts steht und ich steuere nach links, dann läd er zwar die richige Position, aber die andere bleibt im Raum stehen. Auch nicht so toll. Na ja, liegt wohl eher am meinem Code denke ich.

Slayer

BeitragSo, Aug 01, 2004 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, schau mal hier Leo's Adventure


Das ist mein aller erster versuch in BB gewesen Smile
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

blitzblaster

BeitragMo, Aug 02, 2004 7:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Slayer: Werde ich mir heute Abend mal anschaun. Ich habe jetzt die Anim geteilt, so das jede Richtung eine Anim ist. Jetzt geht es, aber die Anim läuft auf, wenn ich keine Taste drücke. Scheiss Spiel . Wie Du gerade feststellst, versuche ich mal was in 2D. Geht ja doch dort etwas anders, als in 3D.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group