Seite 1 von 3

beine bewegen

Verfasst: 28.03.2005 18:25
von spongebob
wenn ich jetzt ein jump n' run spiel mache und dann habe ich eine figur. die soll wenn ich nach rechts drücke auch nach rechts gehen und dabei ihre beine bewegen(damit es auch echt aussieht). ich weiß das kann man mit mehreren sprites machen, aber wie lautet der code für eine animation(ich habe das noch nie in einem tutorial gesehen?)

kann mir einer sagen wo es ein gutes tutorial dazu gibt?

das wäre nett :allright:

Verfasst: 28.03.2005 18:28
von Rubiko
im tut auf purebasic.de gibts das
ich glaube es war

Code: Alles auswählen

for ani=1 to 2
   displaysprite(#sprite,playerx,playery)
next
bin mir nun nicht sicher aber probiers mal aus

Verfasst: 28.03.2005 18:49
von MUDHead
Hi,

ist doch völlig egal, wie genau der Code auf purebasic.de ist. :wink:

Du musst nur die Sprites der Bewegungen der Figur durch eine For-Next-
Schleife erhöhen, wenn du weißt, wie das funktioniert.
Die Figur bewegst du nach rechts, indem du die Variable für die X-Koordi-
nate erhöhst.

Für Animationen gab es irgendwo ein Tut, das Fighter (oder so) hieß.
Und auch in Danilos PureTools war, glaube ich, was drin.


[gelöscht von freedimension, siehe Forenregeln]

Verfasst: 28.03.2005 19:14
von spongebob
aber wenn ich eine for-next schleife mache dann macht der das doch nur einmal. ich glaube ich habe eine lösung gefunden aber noch nicht ausprobiert...

Code: Alles auswählen

while keyboardpushed(#PB_KEY_Right)
beispiel\X=beispiel\X+3
for bsp= 0 to 1
Displaytransparentsprite(bsp,beispiel\X,beispiel\Y)
next
wend 
meint ihr das geht?

Verfasst: 28.03.2005 19:18
von FISCHAUGE
Hi, also es gib eine Super Beispiel Datei mit Fässern wo du mit der Maus abschießen musst sobald du dann ein fass erwischt beginnt die animation und das fass scheint zu explodieren!

Leider weiss ich nicht mehr genau wo es war aber so musst du den code eingeben!

Code: Alles auswählen

 For k=0 To 7
    LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
  Next

Salami

Verfasst: 28.03.2005 19:31
von Salami
Das Tutorial dazu gibts auf der Originalseite: www.purebasic.de ;)

Verfasst: 28.03.2005 20:25
von MUDHead
Wenn das letzte Sprite erreicht ist, lässt du einfach wieder das erste anzei-gen. (zb durch eine If-Abfrage)
Ich hab mir dein Beispiel nicht so richtig angeguckt, aber mit While-Wend
solltest du gerade als Anfänger vorsichtig sein.
Hi, also es gib eine Super Beispiel Datei mit Fässern wo du mit der Maus abschießen musst
Jo stimmt, das hab ich mir auch damals durchgelesen.

Verfasst: 31.03.2005 09:42
von Kaeru Gaman
mit ner for-next schleife habt ihr das problem, dass der komplette bildaufbau,
das buffer-flippen, einfach ALLES innerhalb der for-next schleife sein muss.

aber normalerweise hat man ja alles innerhalb einer hauptschleife,
die erst am ende des spiels (oder mit ESC) beendet wird.

eine permanente anim weist du mit so etwas zu:

Code: Alles auswählen

AnimFrame +1
If AnimFrame > LastFrame
    AnimFrame = FirstFrame
EndIf
natürlich anzeigen mit

Code: Alles auswählen

DisplayTransparentSprite(AnimFRame,X,Y)
wenn es dir um eine animation beim laufen geht, muss das verändern des animationsframes
an die gleiche stelle wie das verändern der koordinaten, also, in die tastaturabfrage.

aber mal generell an alle Anfänger:

ein Jump&Run gehört nicht gerade zu den einfachsten aufgaben.

probierts erstmal mit was billigerem....

------------------------------------------------------------

wenn das proggem der anim zweitrangig für euch ist, könnt ihr euch auch hiermit behelfen:

http://forums.purebasic.com/german/view ... 3707#23707

Verfasst: 06.04.2005 13:39
von Rubiko
sorry das ich den alten thread wieder hochhole, ja das prinzip vom laufen hab ich verstanden, aber welche werte muss man den variablen zuweisen?
codeschnipsel wären fein ;)

EDIT: Dazu ist noch zusagen, nicht das ihr denkt ich bump nur alles hoch und warte auf hilfe: ich hab viele stellen probiert und LETZENDLICH: drück ich wirklich nur einmal! wird es ja um 1 erhöht... (die ani) ... drück ich ein zweites mal gibt der debugger "#sprite object not initialized"

Verfasst: 06.04.2005 14:30
von Kaeru Gaman
naja, du willst halt ein sprite anzeigen, dass du nich geladen hast...

also, nehmen wir mal an, du hast ne anim mit 8 frames,
und die lädst du in die Sprites Nr. 100-107.

damit ist in meinem obigen beispiel:

Code: Alles auswählen

; Inits
;...
FirstFrame = 100
LastFrame = 107
AnimFrame = Firstframe

;...

; Hauptschleife
Repeat

;... 

AnimFrame +1 
If AnimFrame > LastFrame 
    AnimFrame = FirstFrame 
EndIf

DisplayTransparentSprite(AnimFrame,X,Y)

;...

Until ;... Hauptschleifenende
...was du allerdings mit 'drück ich einmal... drück ich nochmal' meinst, is mir nich ganz klar...
..zeig doch ma deinen code...

wäre auch nützlich im hinblick auf deinen anderen Thread "Animation verlangsamen"

...geht doch beide male ums selbe prog, oder?