Probleme mit animerter Textur

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: Probleme mit animerter Textur

BeitragDo, Sep 13, 2007 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
User hat Problem Smile

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 Smile

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

BeitragDo, Sep 13, 2007 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Sep 13, 2007 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group