Tiles animieren funktioniert nicht
Übersicht

LadorBetreff: Tiles animieren funktioniert nicht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, ich wollte mal fragen, wie man am besten Tiles bei einem RPG animieren kann. Ich benutze(wie die meisten von euch wahrscheinlich auch) ein Dim-Feld, in dem die Frames der einzelnen Tiles gespeichert sind. Ich habe das Ganze mit Millisecs() und verschiedenen Layers gemacht, sodass jede halbe Sekunde der Layer + 1 wird. Aber genau wie bei den anderen Methoden, die ich bisher angewendet habe, endet das immer so:
Immer ein Block hat den einen Frame, ein anderer den anderen. Ich hoffe, ich habe mich klar ausgedrückt. Lador |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay Lador. Poste mal dein Quellcode sonst kann dir hir niemand helfen. | ||
![]() |
gameworx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde mit Types arbeiten und dabei ein Feld für die aktuelle Animationsphase sowie die für letzte Animationsphase definieren. | ||
AMD Athlon II X3 440 (3 GHz), 4GB Ram, ATI Radeon HD 5450, Win 7 |
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] DrawImage tileset,x*32-scrollx,y*32-scrolly,map(x,y,1)
DrawImage tileset,x*32-scrollx,y*32-scrolly,water(x,y,wasserlayer) DrawImage tileset,x*32-scrollx,y*32-scrolly,map(x,y,2) wasserzeit = MilliSecs() If anim = True If wasserzeit >= (wasserstart+wasserpause) Then wasserlayer = wasserlayer + 1 If wasserlayer > 3 Then wasserlayer = 0 wasserstart = MilliSecs() EndIf EndIf If map(x,y,1) = 360 Then water(x,y,0) = 360 If water(x,y,0) = 360 Then water(x,y,1) = 361:water(x,y,2) = 362:water(x,y,3) = 361 EndIf Das ist der Ausschnitt des Codes, in dem ich mit dem Wasser arbeite. |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich kann mir nur vorstellen das deine wasserlayervariable nicht global ist
oder dein Code zu wenig. Wenn ich das machen würde dan würde ich das so machen. Code: [AUSKLAPPEN] Dim Map(100,100) Dim Tiles(10);-------------10 TilesSets-------------" Tiles(0)=LoadAnimImage("Tiles.Bmp",16,16,0,20) WasPause=30 setbuffer backbuffer() repeat ;--------------------Wasser Layers-------------------------------- if Millisecs()>WasTimer+WasPause then WasLayer=WasLayer+1:WasLayer=WasLayer mod 10 WasTimer=Millisecs() end if ;---------------------Map Aufbau------------------------------------ For X=0 to 99:For Y=0 to 99:Tie=Map(X,Y):select Tie<10: case 1:DrawBlock Tiles(Set),X*16,Y*16,WasLayer default:DrawBlock Tiles(Set),X*16,Y*16,Tie end select:next:next flip:until keydown(1)=1 Habe ich zwar jetzt nich getestet aber hoffe das es drozdem geht. |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nimm das aus der For X-For Y-Schleife raus:
Code: [AUSKLAPPEN] wasserzeit = MilliSecs()
If anim = True If wasserzeit >= (wasserstart+wasserpause) Then wasserlayer = wasserlayer + 1 If wasserlayer > 3 Then wasserlayer = 0 wasserstart = MilliSecs() EndIf EndIf Es soll ja nicht 1000te Male überprüft und sag auch mal welchen wert wasserpause hat! |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank, Matthias, Kryan und auch gameworx. Ich habe den Codeteil aus der For-Schleife rausgetan, und jetzt funktioniert es!!! ![]() Danke Lador |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group