[B2D] Animation bei Treffer
Übersicht

![]() |
N0XBetreff: [B2D] Animation bei Treffer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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? ![]() Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke! ![]() 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% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, dann nehm ich CopyImage wieder raus, habe mich das auch schon gefragt, denn nur das Bild da stehen zu haben reicht ja. ![]() Gut, dann mache ich solch eine Funktion doch mal. Schließlich will ich ja alles optimal haben. ![]() Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group