Animationen abspielen wo man will und wann man will

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

WEBLink

Betreff: Animationen abspielen wo man will und wann man will

BeitragMi, März 03, 2004 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab folgende Frage.

Ich habe für ein chara alle lauifrichtungen in einer Bitmap gemacht.
dies ist so eingeteilt das von links nach rechts es 10 Bilder einer richtung sind. es gibt 4 Spalten also 4 Richtungen.

Nun möchte die 2. Spalte starten lassen und enden lassen wann ich will.

Wie kann man das am besten machen?

Code: [AUSKLAPPEN]
If einmal = 0 Then laufframe = 6: einmal = 6
If laufframe = 9 Then laufframe = 6
laufframe=(laufframe + 1) Mod 10
EndIf


Hier soll die animation bei 6 (6 ist da 2. Spalte) anfangen und bei 9 aufhören das funktioniert leider nicht.

rambo256

BeitragMi, März 03, 2004 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ALso,ich hab das bei mir so gemacht:

Code: [AUSKLAPPEN]
IF Frame = 6 then frame = frame+1
If Frame = 7 then frame = frame+1
If Frame = 8 then frame = frame+1
If Frame = 9 then frame = 6


Drawimagerect name,player_x,player_y,frame*80,2*80

80 steht für die höhe und breite des Bildes,kann variabel sein
den befehl findest du auch noch einmal inner hilfe.
Außerdem würde Ich dir empfehlen pausen zu machen zwischen den bildern,sonst is das zu schnell!!! ALso:

Code: [AUSKLAPPEN]
If <<Bedingung>>= <<erfüllt>> then
    IF Frame = 6 and i = frame_timer then frame = frame+1    i=0
    IF Frame = 7 and i = frame_timer then frame = frame+1    i=0
    IF Frame = 8 and i = frame_timer then frame = frame+1    i=0
    IF Frame = 9 and i = frame_timer then frame = 6    i=0
i=i+1
Drawimagerect name,player_x,player_y,frame*80,2*80,80,80
endif
 

Kekskiller

BeitragMi, März 03, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde die ganzen If´s im Beispiel besser gegen Select´s und Case´s
eintauschen , spart Zeit und Rechenkraft ( wenn auch nur einen Bruchteil ).

Ctuchik

BeitragMi, März 03, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach doch am Anfang vom Programm:
Code: [AUSKLAPPEN]

Global CharAnimation = 0
Dim Animation(15,2)
Animation(0,0) = 6
Animation(0,1) = 9
Animation(1,0) = 0
Animation(1,1) = 5
Animation(2,0) = 10
Animation(2,1) = 15
Animation(3,0) = 16
Animation(3,1) = 19
usw.

wobei der erste Index die Animationsnummer angibt und beim hinteren 0 = Anfangsframe der Animation, 1 = Endframe der Animation

Dann machst du um die Figur zu animieren:
Code: [AUSKLAPPEN]

If laufframe < Animation(CharAnimation,0) Or laufframe > Animation(CharAnimation,1)
  laufframe = Animation(CharAnimation,0)
Else
  laufframe = laufframe + 1
  If laufframe > Animation(CharAnimation,1)
    laufframe = Animation(CharAnimation,0)
  End If
End If

Dann brauchst du nur Anfangs und Endframe bei der Initialisierung eintragen und kannst der Figur ne andere Animation geben, indem du einfach die Variable 'CharAnimation' änderst!

mfG Ctuchik

regaa

BeitragMi, März 03, 2004 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
rambo256 hat Folgendes geschrieben:

Code: [AUSKLAPPEN]

IF Frame = 6 then frame = frame+1
If Frame = 7 then frame = frame+1
If Frame = 8 then frame = frame+1
If Frame = 9 then frame = 6



Wie wärs denn mit:
Code: [AUSKLAPPEN]

If Frame>5 And Frame<9
   Frame=Frame+1
Else If Frame=9
   Frame=6
EndIf
Wink

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, März 04, 2004 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
hier gibt es viele Möglichkeiten das zu realisieren....
die Bilder könnte man schon anders laden in ein 3D Array
Beispiel 10 Bilder je Richtung

Code: [AUSKLAPPEN]
Dim BilderSpieler (3,9)
Global richtung,Bildframe
;wobei der erste index die Richtung angibt , im 2. die einzelnen Bilder geladen werden
For richtung = 0 To 3; 4 mal
For Bildframe = 0 To 9 ; 10 Bilder
 BilderSpieler (richtung,Bildframe) = LoadAnimImage("Animation.bmp",40,40,frame,1)
 frame = frame +1
Next
Next

;Hauptschleife
...
If KeyDown (hoch)  Then richtung = 1 : Bildframe =(Bildframe +1) Mod 10
If KeyDown (links) Then richtung = 0 : Bildframe =(Bildframe +1) Mod 10

DrawImage x,y,  BilderSpieler (richtung,Bildframe)

habe den Code mal so geschrieben aber nicht getestet!

Und wenn ich das richtig gesehen habe möchtest du das so haben das wenn der Char anfängt zu laufen erst frame 0 bis frame 5 abspeielt und dann 6 -9 immer wiederholt wird bis er dann stehenbleibt. Oder ?
dann muß das noch dahin angepasst werden
, aber ist schon spät...GääHHHnnn
[BB2D | BB3D | BB+]

rambo256

BeitragDo, März 04, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Regga: Jo da hasse Recht Very Happy ,werd ich dann mal ändern...
THX!!

WEBLink

BeitragDo, März 04, 2004 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Antworten sind logisch, ich muss mal sehen wie das mit dem Speed hinhaut Wink

Also, wenn man runter läuft soll zum Beispiel Bild 1 - 5 abgespielt werden wenn man dann hoch läuft 6 - 10 und so weiter.

Thanks für die Antworten

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group