Wie erstelle ich einen Regeneffekt (Partikel) auf Android?

7

Ich entwickle ein 2D-Android-Strategiespiel, das auf SurfaceView ausgeführt wird, sodass ich das Partikelsystem von LibGdx nicht verwenden kann (oder kann?). Und ich möchte einen Regeneffekt machen, ich strebe so etwas an ( http://ridingwiththeriver.files.wordpress.com/2010/09/rain-fall-animation.gif ), ich brauche den Spritzer nicht Effekt am Ende (obwohl das großartig wäre, aber wahrscheinlich eine Menge Systemressourcen beanspruchen würde). Wie könnte ich diesen Regeneffekt erzielen? Irgendwelche Ideen?

Vielen Dank im Voraus!

user19495
quelle

Antworten:

10

Schonen Sie Ihre wertvollen CPU / GPU-Zyklen! Sie können Regen (und Regenspritzer) kostengünstig approximieren, ohne Partikel zu verwenden. Die Regentropfen und Spritzer müssen sich nicht einmal bewegen oder ausgerichtet sein! Zeichnen Sie grundsätzlich zufällig eine Reihe der folgenden Sprites auf den Bildschirm:

Geben Sie hier die Bildbeschreibung ein

Quelle: cameraproofoutlaws.com (Es gibt auch ein Video des Endeffekts)

Leftium
quelle
4

Ich habe einen Regen-Shader für 3D erstellt, ohne Partikel zu verwenden ( Video), sondern stattdessen drei Ebenen derselben Textur, die mit unterschiedlichen Geschwindigkeiten und unterschiedlichen Maßstäben vorbeirollen, wie im Artikel Rendern von fallendem Regen und Schnee beschrieben .

Für 2D möchten Sie natürlich nicht, dass ein Doppelkegel Ihre Regentexturen projiziert, sondern können stattdessen eine Ebene verwenden. Sie können die Effekte jedoch mit ein wenig Drehen verwenden (ich glaube, ich habe es nicht getestet), um ein Gefühl für die Geschwindigkeit nach links oder rechts zu erzeugen. Für vorwärts oder rückwärts können Sie nur ein wenig entlang der y-Achse skalieren.

Mikael Högström
quelle
2

Da es sich um ein 2D-Spiel handelt, benötigen Sie meines Erachtens kein vollständiges Partikelsystem, um schönen Regen zu erzeugen. Hier ist eine Idee: Erstellen Sie einfach eine Regenanimation und kacheln Sie sie über den gesamten Bildschirm.

Ali1S232
quelle
Welche Art von Animation meinst du genau? Danke für die Antwort :).
user19495
Ich kann momentan nichts finden, was mir gefällt, aber die Idee ist einfach. Die Animation sollte nur aus Regentropfen bestehen, die sich nach unten bewegen. Außerdem sollte sie wiederholbar und kachelbar sein. Jedes zweite Pixel in jedem Frame ist vollständig transparent
Ali1S232
2

Irgendwie sehr primitives Java-Beispiel ohne Shader.

    class ParticleSystem
    {
    int maxParicles=10000;
    float ParticleMaxLifeTimeMS=5000;
    particle[] Particles;
    emitter Emitter;
    billboard BillBoard;
    public void Emitt()
    {//emission code goes here}
    public void Evolve()
    {//explosion code goes here}
    class particle
    {
    float SpawnTime;
    float CurrentLife
    float x,y;
    float Vx,Vy;
    float r,g,b,a;
    float mass;
    float scale;
    }

    class emitter
    {
    float x,y;
    float EmissionRate;
    }

    class billboard
    {
    int materail_handler;
    float height,width;
    }
    }
igf
quelle