Ziel dieses Tutorials ist es, den Umgang mit Emitter und Partikeln in DXStudio zu erklären. Für dieses Tutorial wird lediglich DXStudio benötigt.
Beim Öffnen von DXStudio erstellen wir erstmal ein neues Dokument und eine 3D Szene. Sobald alles fertig eingerichtet wurde können wir unten links den Partikel Tab auswählen. Dann klicken wir auf das große „plus“ Symbol und wählen „Create new Particle“.
Im „Particle Properties“ Fenster kann man nun zahlreiche Einstellungen vornehmen. Dazu aber später mehr. Jetzt wollen wir erstmal ein Partikel hinzufügen, dafür klicken wir auf „Add Resource“ und wählen eine entsprechend Bilddatei. Falls du grad kein passendes Bild hast kannst du auch dieses hier verwenden.
Als nächstes brauchen wir einen Emitter. Ein Emitter erzeugt Partikel und bestimmt Flugrichtung und Geschwindigkeit. Um einen Emitter zu erzeugen klicken wir in der Objektliste auf das große „Plus“-Symbol und wählen hier Emitter.
Mit einem Klick wählen wir nun den Emitter in Objektleiste an und DXStudio zeigt uns daraufhin auf der rechten Seite die Objekteigenschaften. Bei „Particle“ klicken wir nun auf das große Feld, in dem uns nun der zuvor erstellte Partikel zur Verfügung stehen sollte.
Eventuell ist der Partikel nun etwas groß. Das lässt sich mit wenigen Klicks ändern. Dazu gehen wir in die Partikelliste (siehe Schritt 1) und klicken mit der rechten Maustaste auf unseren Partikel und wählen „Edit“. Jetzt sollte wieder das Fenster mit den Partikeleigenschaften zu sehen sein. Hier gehen wir nun auf Scale und geben 0.1 ein. Nun sollte der Partikel eine gute Größe haben um damit etwas rumspielen zu können. Jetzt auf OK klicken und fertig.
Jetzt wollen wir mal ein wenig Scripten. Um erweiterte Eigenschaften für den Emitter zu konfigurieren, kommen wir um ein wenig Script nicht herum. Dazu klicken wir in der Objektliste mit der rechten Maustaste auf den Emitter und wählen Edit Script. Wenn das CodePad offen ist kann es auch schon losgehen.
Da die Richtung nur einmal geändert werden muss, brauchen wir dies nicht beim „onUpdate“ Event zu tun. Statt dessen nehmen wir „onInit“.
function onInit() { object.emitter.direction = new Vector(0,45,0); }Drückt man nun auf das „Play“ Symbol sollte der DXPlayer gestartet werden. Hier kann man nun beobachten, wie die Partikel nach oben fliegen. Sieht etwas langweilig aus, aber jetzt sollte alles Grundlegende zu Partikel erklärt sein.
Um die Partikel etwas zu verschönern, öffnen wir das Partikeleigenschaften Fenster und stellen „Mode“ auf „Lighten“ um. Dadurch werden die Teile des Partikels die durchsichtig sind, und sich mit anderen Partikeln überschneiden, heller. Das gibt am Ende einen schönen Effekt.
„Life“ stellen wir auf 2 Sekunden und „Fade Out Before Death“ auf 1. Somit wird der Partikel eine Sekunde bevor seine „Lifetime“ abgelaufen ist, sanft ausgeblendet.
Zum Schluss setzen aktivieren wir noch Schwerkraft mit einem Klick auf „Gravity“.
Jetzt ändern wir noch ein paar Einstellungen des Emitters um dessen Funktionsweise ein wenig verständlicher zu machen.
Als Erstes geben wir bei „Frequency“ 100 ein. Damit werden jetzt 100 Partikel pro Sekunde erzeugt. „Speed“ stellen wir auf 10 und „Direction Spread“ auf 15. Letztere Einstellung sorgt dafür, dass die Flugbahn der Partikel ein wenig variiert.
Wenn alles eingestellt ist, dann klicken wir auf den „Play“-Button oder drücken alternativ F12 um das Programm auszuführen. Nun sollte ein recht ansehnlicher Partikeleffekt erscheinen.
Jetzt sprüht der Emitter die ganze Zeit seine Partikel in die Luft, aber vielleicht wollen wir das ja gar nicht !? Für diesen Fall bietet jedes Emitterobjekt eine eigene Variable namens „active“. Diese Variable ist vom Typ „bool“ und man kann wie folgt darauf zugreifen: Object.emitter.active
Schreibt man nun also folgendes in das Objectscript des Emitters, wird dieser deaktivert: Object.emitter.active = false;
Mit dem folgendem Beispielscript wird die Partikelerzeugung unterbrochen, solang man die Leertaste drückt.
function onKeyChange(e) { if ( keys.space && object.emitter.active == true ) { object.emitter.active = false; } else { object.emitter.active = true; } }Zugegeben ist das gesamte Ergebniß nicht das, was man regelmäßig in einem Spiel braucht.Allerdings soll es ja auch nur die Funktionsweise von Emitter von Partikeln näher bringen und zeigen, wie man diese noch erweitern kann.