[B2D] Animation bei Treffer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: [B2D] Animation bei Treffer

BeitragFr, Feb 12, 2010 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich habe eine Explosionsanimation in meinem Weltraum-Shooter.
Ich möchte jetzt das diese Animation in einer bestimmten Geschwindigkeit genau einmal durchläuft, wenn der Gegner getroffen wurde.
Das habe ich so versucht, hat aber nicht funktioniert: (ist nur ein Ausschnitt!)
Code: [AUSKLAPPEN]
   For s.Schuss = Each Schuss
         For g.Gegner = Each Gegner
            If RectsOverlap(g\x,g\y,40,40,s\x,s\y,2,5) Then
            If timer + 1000 < MilliSecs() Then
               drawAni = 1
               frame = frame+1
               If frame = 15 Then drawAni = 0
            EndIf
            If drawAni=1 Then DrawImage expl,g\x,g\y,frame
            Delete s.Schuss
            Delete g.Gegner
            EndIf
      Next
   Next


Wie kann ich das jetzt funktionsfähig machen? Very Happy

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragFr, Feb 12, 2010 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstell einen Type für die Explosion. Das ganze in der Trefferprüfung ist... suboptimal.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

faeX

BeitragFr, Feb 12, 2010 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde mal so sagen, dass du dieses ganze Zeichnen der Explosion außerhalb der Schusskollisionsroutine schieben musst.

Denn wenn eine Schusskollision erkannt wurde, zeichnet er das erste Einzelbild nur einmal, verstehst du?
Und ganz wichtig: Speicher die Position des abgeschossenen Gegner nochmal öffentlich! Der Gegner wird ja beim Abschuss gelöscht...

Aber: Wenn du jetzt schnell hintereinander mehrere Gegner abschießt, wird immer nur die Animation bei dem letzten Gegner angezeigt.

Stattdessen solltest du dir ein Field tot% bei deinem Gegner anlegen und den Gegner erst löschen, wenn die Animation abgelaufen ist. Dann müssten natürlich auch frame und drawAni als Field in den Gegner.

mfG faeX

Und viel Spaß noch! Wink

EDIT: Oder du machst es wie Xeres es dir empfohlen hat, du bastelst dir nen Type für Explosionen und erstellst eine beim Abschuss. Das wäre im übrigen die beste Lösung! Und das würde ich dir auch empfehlen...

N0X

BeitragFr, Feb 12, 2010 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Very Happy
Echt fett, funktioniert 1A!
Habe das jetzt so gelöst: (optimal?)
Code: [AUSKLAPPEN]
For e.explo = Each explo
   DrawImage e\gfx,e\x,e\y,e\frame
      
   If timer + 1000 < MilliSecs() Then
      e\frame = e\frame+1
      If e\frame = 15 Then Delete e.explo
   EndIf
Next

For s.Schuss = Each Schuss
      For g.Gegner = Each Gegner
         If RectsOverlap(g\x,g\y,40,40,s\x,s\y,2,5) Then
         e.explo = New explo
         e\x = g\x
         e\y = g\y
         e\gfx = CopyImage(expl)
         Delete s.Schuss
         Delete g.Gegner
         EndIf
   Next
Next


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragSa, Feb 13, 2010 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Optimal ist, wenn du eine Funktion z.B. Create_Explo aufrufen würdest. Rundet das ganze ab und vielleicht kann man das an anderen Stellen wieder verwenden.

Edit: Ist Copyimage wirklich nötig? Wenn du am Bild nichts änderst, reich die Verlinkung.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

N0X

BeitragSa, Feb 13, 2010 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, dann nehm ich CopyImage wieder raus, habe mich das auch schon gefragt, denn nur das Bild da stehen zu haben reicht ja. Rolling Eyes
Gut, dann mache ich solch eine Funktion doch mal. Schließlich will ich ja alles optimal haben. Razz

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group