übliche thema: animation
Übersicht

![]() |
flexoBetreff: übliche thema: animation |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi leute
also problem: ich will meine figur animieren (charset hab ich) also sie soll flüssig in alle richtungen laufen... bis jetzt ist bei mir nur n mist rausgekommen, wo die person immer tilesetmäßig gesprungen ist (rechts => char hüpft nach rechts) also was mir wichtig wäre ist das: - sie soll flüssig laufen, nicht springen - sie soll nicht zu schnell laufen können vllt war mein problem dass ichs mit delay versuchat hab statt millisecs() aber millisecs macht ja nach "forever" oder "until" weiter... wäre gut wenn mir des mal kurz erklären könnte mit den kriterien oben.. forensuche usw find ich was aber nicht mein problem.. mfg flexO |
||
Du bist eizigartig - genau wie jeder andere auch. |
- Zuletzt bearbeitet von flexo am Sa, Jul 16, 2005 10:48, insgesamt einmal bearbeitet
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
DU hat Folgendes geschrieben: forensuche usw find ich was aber nicht mein problem..
Das glaub ich eigentlich nicht, da ich das Gleiche in "Problem mit Frames" im Beginner-Forum schon einmal geschrieben habe, dazu musst du natürlich deine Animation schon haben, und die Frames musst du dann entsrechend anpassen. Sonst poste noch einmal, wenn du meinen Code haben willst. |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
will dein code haben ^^
schau grad nochmal forensuche o_O [EDIT] nix... brauch doch hilfe... [/EDIT] |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, eigentlich bin ich ja dafür, dass du es selbst herrausfinden solltest, aber da der Code sowieso von anderen Proggrammieren geproggt wurde, gebe ich ihn dir gerne. Hier die Funktion...
Code: [AUSKLAPPEN] Function drawspieler()
If KeyDown(203) Then laufen = True sframe = 5 ElseIf KeyDown(205) Then laufen = True sframe = 1 Else laufen = False EndIf If laufen = True Then frame = (frame + 1) Mod 2 DrawImage Figur, 200,100, sframe + frame End Function ...und hier der ganze Code mit der Funktion(ist bei mir schon erweitert ![]() Code: [AUSKLAPPEN] Global frame
Global laufen = False Global sframe = False Function drawspieler() If KeyDown(203) Then laufen = True sframe = 5 ElseIf KeyDown(205) Then laufen = True sframe = 1 Else laufen = False EndIf If laufen = True Then frame = (frame + 1) Mod 2 DrawImage Figur, 200,100, sframe + frame End Function Graphics 640,480,16,2 SetBuffer BackBuffer() ClsColor 0,0,255 Cls Global Figur = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8) MaskImage Figur, 255,255,255 Repeat Cls drawspieler If KeyDown(1) Then Exit Delay 150 Flip Forever End Ach ja, dazu noch etwas: Denke aber daran, dass du den Code verstehen musst, sonst wirst du früher oder später noch einmal fragen, oder dein Code funktioniert nicht, weil du noch Scrolling oder so was eingebaut haben willst. ![]() |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, genau des gleiche hab ICH auchschon programmiert... ![]() vorm halben jahr hab ich mich mal drangesetzt... ![]() (da hab ich mal sowas gemacht) [ der newbie bin ich höchstens im gebiet types ^^ ] nya dann hock ich mich nochmal dran.. hab grad ne idee ![]() trotzdem danke @ jack/dennerlein ich glaUB der thread war wohl nix da ich' so schon hatte ^^ |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welche Fehlermeldung erscheint denn ![]() |
||
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wiedereinmal kann ich von diesem Code nur abraten. Er ist ineffizient und Du solltest ihn Dir nicht einprägen - einfach mieser Stil. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ jack
mir gehts ums prinzip quasi @bladerunner ich versteh nich wirklich was an dem code so schlimm ist, so ähnlich sieht meiner auch aus... |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
schon allein das delay- es bremst dein Programm aus. nutze die Forensuche und Du wirst millisecs()timer finden. Ich hab erst vor kurzem was dazu in die Faq gepostet. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ich hab mir des mal durchgelesen...
ich wollte s auch mit milisecs machen aber ich hab keinen blassen schimmer wie ich das schreiben kann .. |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
nun das prinzip wird dort ja anhand eines funktionierenden codes erklärt... Du musst nur in der timerschleife das frame erhöhrn (und bei maximum wieder auf 0 setzen ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If KeyDown(203) Then Select array(playerx-1,playery,collidierung) Case 0 playerx=playerx-1 End Select End If [...] drawimage charset,playerx*16,playery*16,frame mein problem liegt eigentlich vielmehr hieran anls an den frames. also.. oben erhöht sich die Xkoordinate um 1. unten aber wird sie mal 16 enommen => die figur springt von x=0 nach x=16 was ich aber haben will ist dass die figur flüssig läuft. nun kann ich auch nicht sagen Code: [AUSKLAPPEN] drawimage charset,px*8,py*8,frame weil das sonst alles verfälscht... ![]() hoffe es ist nachzuvollziehen was ich meine mfg trotzdem danke @bladerunner! werd ich gebrauchen können! |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
schau dir dieses beispiel mal an, daraus wirst du was lernen können
https://www.blitzforum.de/view...ht=tilemap Zitat: [ der newbie bin ich höchstens im gebiet types ^^ ]
nja, kann man drüber streiten, wenn man sowas schon nicht hinbekommt^^ |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: nja, kann man drüber streiten, wenn man sowas schon nicht hinbekommt^^
ich mein ich hab bis jetzt nen editor, dynamische tilemap (eben das), ne figur die drauf laufen kann und kollidiert, und sie kann tabak einsammeln! ![]() ich mag nur den schönheitsfehler beim laufen beheben.. |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja das habe ich schon verstanden, ist dein charakter unabhängig von tileset und dessen scrolling?
du musst einfach nur nen teiler von deiner tilegröße nehmen und den charakter so bewegen, wenn ers dann immernoch zu schnell laüft erstelle ne variable, indem die millisecs() gespeichert werden, das noch vor der hauptschleife. Code: [AUSKLAPPEN] zeit = millisecs() ;hauptschleife in der hauptschleife prüst du, ob die neue variable millisecs()größer ist als die alte +250(animationszeit) Code: [AUSKLAPPEN] if millisecs()+250>=zeit then frame=frame + 1 zeit=millisecs() endif durch das unterteilen der schritte hüoft deine figur nicht mehr und durch den zuvor beschriebenen code funktioniert die animation. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() genau das meinte ich.. thx! thx auch an bladerunner.. dann werd ichs in angriff nehmen ![]() mfg, flexo |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] px=laufenx(px,py) ;funktion aufrufen [...] Function laufeny(px,py) If KeyDown(200) Then ;wenn UP gedrückt wird... If richtung<>1 frameu=3 ;es war vorher nicht gedrückt Else If MilliSecs()+250>=zeit ;es war vorher gedrückt zeit=MilliSecs() zaehler=(zaehler+1) Mod 3 ;er zählt von 0 bis 3 frameu=zaehler+3 ;addiert den frame, also zählt er von 3 bis 5 Endif EndIf richtung=1 Select array(px,py-1,2) Case 0 ;wenn er nicht kollidiert mit dem nächsten feld... py=py-1 End Select Endif Return py ;geben ich den wert zurück End Function ich versteh mein code selber nichtmehr ![]() dabei sollte's nur eine lauf-animation werden... |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich zeig dir mal meinen code ...
Code: [AUSKLAPPEN] Function move_player() If playermoving=True Then If Vplayer\actiontime<=0 Then If Vplayer\frametime=0 Then Vplayer\frame=Vplayer\frame+1 If Vplayer\frame>2 Then Vplayer\frame=1 Vplayer\frametime=15 Else Vplayer\frametime=Vplayer\frametime-1 End If ;collision If get_tile(Vplayer\x#-Absxoff+Sin(Vplayer\turn#)*16-16,Vplayer\y#-Absyoff+Cos(Vplayer\turn#)*16-16,MOVELEVEL)>0 Then Vplayer\x#=Vplayer\x#-Sin(Vplayer\turn#) Vplayer\y#=Vplayer\y#-Cos(Vplayer\turn#) Else Vplayer\x#=Vplayer\x#+Sin(Vplayer\turn#) Vplayer\y#=Vplayer\y#+Cos(Vplayer\turn#) End If If Vplayer\walkmode=0 Then Vplayer\actiontime=TIME_SNEAK If Vplayer\walkmode=1 Then Vplayer\actiontime=TIME_WALK If Vplayer\walkmode=2 Then Vplayer\actiontime=TIME_RUN End If End If End Function damit lauf ich auf meiner tilemap rum und funktioniert prächtig.... ahso, ich seh gerade das du wohl nich in alle richtungen läufst sondern nur auf den tiles ... willst du also, das er bei einem tastendruck immer smooth 16 pixel sich animiert in die entsprechende richtung läuft? |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
flexo |
![]() Antworten mit Zitat ![]() |
---|---|---|
also mein prblem liegt eher darin, dass ich
versuche, meine figur zu animieren. also sie soll a) langsam(er) laufen b) erst den linken fuß, dann rechten usw.... dürte nicht sonderlich schwer sein aber ich steh zur zeit auf der leitung... |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
das macht ja genau diese stelle
Code: [AUSKLAPPEN] If Vplayer\frametime=0 Then Vplayer\frame=Vplayer\frame+1 If Vplayer\frame>2 Then Vplayer\frame=1 Vplayer\frametime=15 Else Vplayer\frametime=Vplayer\frametime-1 End If wenn frametime null ist wird der frame um eins erhöht und frametime wieder auf 15 gesetzt, ansonsten wird frametime eben solange verringert bis es null ist... das heißt alle 15 frames wird der animationsframe um eins erhöht... besser ist es das mit millisecs zu machen, aber irgendwie hab ich wohl damals dafür keine notwendigkeit gesehen ... |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group