Probleme mit animerter Textur
Übersicht

NerleBetreff: Probleme mit animerter Textur |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
User hat Problem ![]() Bei jedem Schuss der das Level-Mesh trifft soll ein kleiner animierter Einschlag gezeigt werden. Nichts grossartiges, nur ein kleines Sprite mit animierter Textur, dachte ich mir. Aber obwohl ich da jetzt seit gestern herummache, gelingt es mir nicht. Irgendwas ist da falsch, und ich weiss mal wieder nicht was ![]() Könnt Ihr mir vielleicht weiterhelfen? Bei folgendem Code (Auszug) erscheinen nur weisse leere Sprites, die sich auch - trotz FreeEntity - nicht mehr löschen. Von der Textur keine Spur. Code: [AUSKLAPPEN] If shot>0 Then ; Kollision Schuss mit LevelMesh If EntityCollided(ShootDummy(shot),2) Then ; Impact erstellen actualImpact = actualImpact + 1 Impact(actualImpact) = CreateSprite() ScaleSprite Impact(actualImpact),5,5 PositionEntity Impact(actualImpact),EntityX(ShootDummy(shot)),10,EntityZ(ShootDummy(shot)) EntityOrder Impact(actualImpact),-1 ; Impact 1x animieren, dann löschen If millisecs()-time>50 Then For x = 0 To 7 frame = frame +1 EntityTexture Impact(actualImpact),impactTex,x Next frame=0 FreeEntity Impact(actualImpact) EndIf EndIf EndIf |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die animation so wird net gehen.
Da musst du wohl oder übel mit Types arbeiten und in jedem Hauptschleifendurchlauf die Textur animieren ausser du willst dass die ganze welt stehen bleibt, damit sich 1 sprite animieren kann. Zudem ist deine Animationsroutine da eh sinnfrei. Ohne Flip aktualisiert sich der Entity garnie für den spieler, kannst dir den aufwand also sparen. Das ist vermutlich auch zugleich der hauptgrund für die weissen sprites: Du erzeugst sie, texturierst sie aber nie. Denn dort wo sie texturiert werden, werden sie auch direkt zerstört. -> kein flip -> keine 3D existenz |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Nerle |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit FLIP ist klar, dies hier ist ja nur ein Auszug aus dem GesamtCode. Flip habe in der Hauptschleife ganz unten, unter dem obigen IF-Auszug stehen, und hoffe zumindest, dass es dort auch richtig platziert ist; zumindest ohne For-Next-Schleife, stimmt, ist so wirklich unsinnig...
Und die obige FOR-NEXT-Schleife ist auch nur einer von vielen erfolglosen Versuchen, zuvor hatte ich es in der Hauptschleife und ohne For-Next versucht, allerdings auch recht erfolglos. Wegen den Types: Meinst Du damit, dass es eine Speicherung der verschiedenen Impacts in einem Array, so wie oben, also nicht tut? Mag es daran liegen, d.h. dass die einzelnen Impacts hier mittels der bloßen Speicherung in einem Array einzeln nicht korrekt angesprochen werden? EDIT: Ich hab das jetzt mal so in die Hauptschleife geschrieben - Resultat: Es zeigt jeden Einschlag für die gewünschte Dauer an - nur eben immer noch ohne Textur: Code: [AUSKLAPPEN] ; Impact 1x animieren, dann löschen If actualImpact > 0 Then If millisecs()-time>500 Then frame = frame +1 EntityTexture Impact(actualImpact),impactTex,frame If frame >6 Then FreeEntity Impact(actualImpact) actualImpact = actualImpact -1 EndIf EndIf EndIf UpdateWorld RenderWorld Flip |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group