Held animieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

LoD

Betreff: Held animieren

BeitragDo, Dez 15, 2005 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab vor ein paar Tagen angefangen mit BlitzBasic zu programmieren und bin voll begeistert...

Heute hab ich versucht den Helden meines "Spieles" per druck auf die Pfeiltasten zu bewegen, was mir mit dem Code auch gelungen ist.
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,1
ClsColor 0,0,255

player=LoadImage(\"F:\hero2.bmp\")
playerx = 320
playery = 240


Repeat


If KeyDown(205) ; Falls Cursortaste rechts gedrückt ist.
playerx=playerx+1
EndIf


If KeyDown(203) ; Falls Cursortaste links gedrückt ist.
playerx=playerx-1
EndIf


If KeyDown(208) ; Falls Cursortaste runter gedrückt ist.
playery=playery+1
EndIf


If KeyDown(200) ; Falls Cursortaste rauf gedrückt ist.
playery=playery-1
EndIf

Cls


MaskImage player, 255,255,255
DrawImage player,playerx,playery
Flip


Until KeyHit(1)

End

Jetzt wollte ich aber noch einen Effekt, dass der Held sich dreht wenn ich in eine andere Richtung laufe und unterm Laufen eine Gehanimation hat.
Dafür hab ich den Code benutzt:

BlitzBasic: [AUSKLAPPEN]

playerx = 320
playery = 240
hero=2

time=MilliSecs() ;Damit man den Effekt auch sieht

Repeat


If KeyDown(205) ; Fals Cursortaste rechts gedrückt ist.
playerx=playerx+1
If time < MilliSecs()+150 Then
If hero=1 Then
hero=2
ElseIf hero=2 Then
hero=1
Else
hero=2
EndIf
time=time+150
EndIf
EndIf


If KeyDown(203) ; Fals Cursortaste links gedrückt ist.
playerx=playerx-1
If time < MilliSecs()+150 Then
If hero=3 Then
hero=4
ElseIf hero=4 Then
hero=3
Else
hero=3
EndIf
time=time+150
EndIf
EndIf


If KeyDown(208) ; Fals Cursortaste runter gedrückt ist.
playery=playery+1
If time < MilliSecs()+150 Then
If hero=5 Then
hero=6
ElseIf hero=6 Then
hero=5
Else
hero=6
EndIf
time=time+150
EndIf
EndIf


If KeyDown(200) ; Fals Cursortaste rauf gedrückt ist.
playery=playery-1
If time < MilliSecs()+150 Then
If hero=7 Then
hero=8
ElseIf hero=8 Then
hero=7
Else
hero=8
EndIf
time=time+150
EndIf
EndIf

Cls

; Eigentlich wollte ich den jeweiligen Pfad in einer Variable speichern und ;dann in player=LoadImage(Variable) einfügen, aber das geht ;anscheinend nicht.

If hero=1 Then
player=LoadImage(\"F:\hero\hero_limi1.bmp\")
ElseIf hero=2 Then
player=LoadImage(\"F:\hero\hero_remi1.bmp\")
ElseIf hero=3 Then
player=LoadImage(\"F:\hero\hero_liun.bmp\")
ElseIf hero=4 Then
player=LoadImage(\"F:\hero\hero_reun.bmp\")
ElseIf hero=5 Then
player=LoadImage(\"F:\hero\hero_limi2.bmp\")
ElseIf hero=6 Then
player=LoadImage(\"F:\hero\hero_remi2.bmp\")
ElseIf hero=7 Then
player=LoadImage(\"F:\hero\hero_liob.bmp\")
ElseIf hero=8 Then
player=LoadImage(\"F:\hero\hero_reob.bmp\")
Else
player=LoadImage(\"F:\hero\hero_remi1.bmp\")
EndIf

MaskImage player, 255,255,255
DrawImage player,playerx,playery
Flip


Until KeyHit(1)

Aber mir gefällt diese Möglichkeit noch nicht wirklich...
Gibt es noch eine andere Möglichkeit sowas zu erzielen?
Auserdem kommt es vor, dass der Held "ruckelt" wenn er zu lange in eine Richtung läuft.

M0R73N

BeitragDo, Dez 15, 2005 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hoi,hoi ^^
Also....
am besten ist wenn du alle bilder zu einem Bild zusammen fast ^^ am besten mit einem Zeichenprogramm. Paint reicht dazu vollkommen aus.

jetzt lädst du dieses Bild mit deisem befehl:

bildvariable = LoadAnimImage ("bild.bmp", 32, 32, 0, 8 )

bildvariable = LoadAnimImage("bild.bmp", hoehe, breite, erstes_bild, bilder_anzahl)

hoehe und breite geben die Höhe und breite eines Einzelbildes im großen Gesamtbild an (alle Einzelbilder müssen gleich groß sein, klar). erstes_bild ist das erste Bild in der Reihe. Gewöhnlich ist es 0. bilder_anzahl ist die Gesamtanzahl der Bilder die in dem "Filmstreifen" drin sind. Wenn man sehr viele Einzelbilder hat muss man auch nicht unbedingt alle in einer Reihe haben, man kann das ganze auch wie in einem Comic anordnen, also von links nach rechts und von oben nach unten.

und mit diesem Befehl kannst du sie nacheinander abspielen
DrawImage bildvariable, x, y, frame
solltest das in eine schleife packen damit es unendlich lange animiert ist.


Mfg M0R73N


ps. am besten du lädst dir ein einsteiger tut runter:
http://www.robsite.de/tutorials.php?tut=blitzbasic

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group