Sprite-Problem (Düseneffekt)
Übersicht

MegaTefytBetreff: Sprite-Problem (Düseneffekt) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich habe derzeit ein etwas blödes Problem. Folgende Situation: ich versuche einen Düseneffekt für ein fliegendes Raumschiff zu machen. (also das Zeug, was aus dem Raumschiff"auspuff" hinten rauskommt) Ich poste dazu mal ein Bild aus einem Testprogramm, welches mein Problem recht gut zeigt: ![]() Beschreibung: das ganze stellt eine Kamerafahrt dar. Die Kamera bewegt sich jedes Frame mit 0.5 Einheiten nach vorne und jedesmal wird um 2 in Richtung Z verschoben ein "Düsensprite" gemacht, das durch die Kamerabewegung ja automatisch nach hinten geht. Die Bewegungsschritte der Kamera sind zu groß für die Sprites und sind dadurch zu sehr versetzt (siehe linker "Streifen"). Daher schiebe ich mit jeder Kamerabewegung um 0.5 jedes Sprite um 0.45 mit der Kamera, dann sieht das aus wie der rechte Streifen. Der graue Balken in der Mitte ist die Z-Startposition von den Sprites (auf der Höhe wäre dann der Raumschiff"auspuff"), der Balken liegt genau auf der Höhe der Startposition der Sprites. Und genau dort liegt das Problem! Wie man sieht erstellt er JEDESMAL ein Sprite, welches hinter der eigentlichen Startposition liegt. Ich hab schon alles mögliche probiert und keine Ahnung wo dieses zusätzliche Sprite jedesmal herkommt. Am besten sieht man das am rechten Strahl, der fängt so richtig auf der Höhe des Balkens an, aber dahinter liegt ein einzelnes Sprite extra... Wenn das nicht wäre sähe das am Raumschiff perfekt aus (mit einem bläulichen Sprite). Ich poste mal den Quellcode dieses Testdingens zum Selbertesten: BlitzBasic: [AUSKLAPPEN]
Die bullet.bmp war bei einem Beispiel dabei, ich hab sie mal hochgeladen: http://www.rushed.de/download_demo.php?lockID=7736. Achja, in dem Test werden die Sprites nicht gelöscht. ![]() ![]() |
||
![]() |
tobiasm767 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin David
also das Problem ist hier bei das CaptureWorld (hab ja gesagt ist nicht ganz einfach ![]() wenn du ein neues Objekt erstellst am besten immer vor dem CaptureWorld-Befehl. und am besten das 'EntityZ(Camera) + 2' durch 'EntityZ(Zeige,True)' ersetzten macht hier glaube mehr Sinn... BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
Lord_Vader |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte auch darauf hinweisen das 0.5er schritte recht viel is. Als ich mach bei meinen spielen immer 0.01...schritte.
Das könnte es dann auch sein was? ![]() |
||
MegaTefyt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nope, es war schon das CaptureWorld-Problem und die Reihenfolge (Objekte VOR CaptureWorld erstellen). Also es funktioniert jetzt, danke an meinen Arbeitskollegen. ![]() Naja, und bei dem "Projekt" steh ich noch ganz am Anfang, die 0.5 sind noch von meinem allerersten Test drin. ^^ |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur ein Tipp, falls du ein "richtiges" Spiel draus machen willst und dir viel vergebliche Arbeit sparen möchtest:
Wenn du solche Effekte (mit hoher Objekt-Anzahl) benötigst, solltest du auf KEINEN Fall Sprites verwenden, das frisst Geschwindigkeit wie Hölle. Die beste Lösung ist hier auf jeden Fall, wenn du alle Partikel in einem einzigen Mesh unterbringst (Single-Surface). Man sollte solche Dinge von Anfang an immer mal auf langsameren Rechnern testen -wenn man damit wartet, bis ein Spiel fertig ist, beisst man sich unter Umständen höllisch in den Hintern -dann war viel Arbeit umsonst. Nur mal ein Beispiel: einen langsamen PC kannst du mit zweihundert Sprites u.U. schon in die Knie zwingen -wenn du alle Objekte geschickt in einem Mesh renderst, kannst du zweitausend "Sprites" nutzen. Für mich sind die eingebauten Blitz-Sprites nur eine Notlösung, die man hier und da vielleicht mal für einzelne Dinge verwenden kann, aber mehr nicht. ![]() Wenn's dir aber nur um's rumprobieren geht, ist das ja kein Problem. Wollte es nur gesagt haben, bevor die Mühe umsonst war... ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
MegaTefyt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, für den Düseneffekt sind bei mir gerade mal maximal 7 Sprites auf einmal zu sehen. ^^ | ||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, aber es kommt ja sicherlich noch mehr dazu -die Düsen anderer Schiffe, Schüsse, Explosionen, Feuer, Rauch und so weiter. Das summiert sich.
Es schadet wirklich nicht, sich von Anfang an eine professionelle Technik anzugewöhnen. Denn irgendwann werden deine Projekte größer -und dann kommst du nicht mehr dran vorbei. Es ist immer gut, sich für solche Effekte eine Library zu coden, die man immer wieder verwenden kann. Und weil man sich die Arbeit dann ja nur einmal macht, kann man da ruhig mal mehr Zeit drauf verwenden. Ist nur ein Tipp. |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group