schöner regen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • schöner regen

    hallo!
    ich habe hier leider nichts gefunden, was mir wirklich weiterhilft... ich möchte, dass es ab un zu für eine weile regnet. kein problem, ABER: es sollte langsam beginnen und auch langsam wieder aufhören - realistisch halt... und die tropfen sollten möglichst gut aussehen und unterschiedlich schnell fallen!
    ich möchte nicht, dass das jetzt jemand extra für mich codet... wäre zwar nett!^^ aber hat jemand in seinem spiel so etwas ähnliches gemacht und würde das hier posten?? wäre sehr dankbar!!!!

    mfg flogy
  • Also mit dem Partikel-Tutorial geht das recht gut.
    Verschiedene größen der Tropfen, Geschwindigkeit usw wird da schon abgehandelt, naja und das mit dem langsam anfangen würde ich einfach mit einer wachsenden Anzahl an generierten Partikeln pro Step realisieren.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Mir persönlich gefällt der eingebaute regen nicht sehr gut, meiner Meinung nach kann man wesentlich schönere Effekte bekommen, wen man mehrere Lagen Tropfensprites übereinander nimmt, und entsprechen den alpha wert verringert und vergrößert. zb. für wenig regen nur die erste schicht, und dann langsam die anderen einblenden, bis es stark regnet.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • ^^da ich ja nicht coden soll, beschreibe ich meine Idee mal:
    REGEN ANFANG(tml_regen_anfang)

    -etwa 5-7 Backgrounds mit regentropfen erstellen.
    -eine timeline erstellen: >step0: background 1 aktivieren mit speed 1,1
    >step100-300: nächsten bg aktivieren mit speed 1,3
    > und so weiter, bis alle BGs aktiviert sind und sich bewegen
    -timeline tml_regen aufrufen und aktuelle beenden

    REGEN (regnet)

    -neue tml erstellen (tml_regen)
    -adde etwa alle 300-500 steps mehr speed zu den backgrounds
    -timeline tml_regen_ende aufrufen und aktuelle beenden

    REGEN ENDE

    -eine neue tml erstellen (tml_regen ende)
    -speed langsam (50-100 steps) runterstellen
    -vlt noch kurz eine Regenbogen sprite mit alpha 0.3 einblenden
    -backgrounds langsam deaktivieren (100-300 steps)

    mit der Hoffnung, die ein bisschen geholfen zu haben
    -gn ;)
    Kaldor - Das erste echte MMORTS
  • erstmal danke, dass ihr geschrieben habt!!
    auch ich denke, dass man mit partikeln ein schönerer effekt hinkriegt... aber ich habe noch NIE richtig schönen regen in einem game gesehen...

    @iTeM:
    achja mein game is aus der vogelperspektive (schräg von oben)

    @GamerNet:
    hmm... du darfst natürlich coden... solange es nicht zu aufwändig ist ;) wäre ne möglichkeit... aber ganz blick ich da leider nicht durch, wie du das meinst :(

    @all:
    hat vll jemand n wirklich gutes tut für partikel (auf deutsch)... ich gebe zu, dass ich noch nich sehr lange nach tuts gesucht habe, aber die, die ich fand nützen mir nicht viel :(

    bitte denkt daran: ich bin anfänger... danke!
  • ^^gabe meine theorie mal in einem example veranschaulicht, Vorsicht: habe es selbst noch nicht getestet.
    gm-dev.net/gm-d/regen.gm6
    -gn ;)
    Kaldor - Das erste echte MMORTS
  • danke ;)
    Du kannst natürlich nochmehr BGs hinzufügen, sodass der Regen realistischer wird. Ich habe absichtlich den Regen erst ab BG 1 gestartet, sodass du normal einen Background 0 als 'normalen' hintergrund nehmen kannst. Ach ja: eines ist mir noch aufgefallen: wenn du objekte in den room gibst, läuft der Regen hinter den Objekten. Du musst also die Backgrounds auf 'Foreground image' stellen.

    hier eine gefixte version:
    gm-dev.net/gm-d/regen_vordergrund.gm6
    -gn ;)
    Kaldor - Das erste echte MMORTS
  • Giebt es ne Möglichkeit das der regen zerstört wirt wen er auf ein object fellt? wie boden?
    da er durch den boden fellt -.-

    habe etliches probiert ohne erfolg -.-
    Mein Game und meine seite: riataliaxeas.npage.de/

    Spoiler anzeigen
    Zeit zurückspulen, Tag-/Nacht-System, Begleiter mit Boni, Shop, Dungeon und Licht-/Schatteneffekte, 3D-Fake-Natur und mehr...Termin: Mitte 2016
    :!:
  • Nein, nicht direkt.
    Regen wird generell mit Partikeln / Spritebildern gemacht um Ressourcen zu sparen. Selbst AAA-Titel machen das so. Für den "Aufplatz"-Effekt wird einfach zufällig eine Animation oberhalb der Objekte erstellt.

    Man könnte natürlich alles mit Objekten machen, die erkennen, wenn sie aufkomen. Dies kostet aber viele Ressourcen, hast du nur 20 Regentropfen oder so auf einmal auf dem Screen könntest es du so machen. Mehr würden zu viele Ressourcen kosten.
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Es wäre in dem Sinne auch möglich, wenn man jeden Tropfen einzeln spawnt und die lives einfach voraus berechnet
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Man könnte hunderte Regentropfen mit nur einem Objekt machen. Und zwar mit Arrays und für die Kollisionen könnte man die Leveltiles oder Objekte in einem Grid speichern und dann diesem abfragen:

    GML-Quellcode

    1. //create event:
    2. grid = ds_grid_create(room_width / 32, room_height / 32); //je nachdem wie groß ein Bodenobjekt ist als Bsp. 32 Pixel
    3. with(obj_Boden) {
    4. grid[# floor(x / 32), floor(y / 32)] = 1; //jedes Bodenobjekt wird im Grid gespeichert, mit 1 (wichtig: dieses Objekt muss nach allen Bodenobjekten im Raum paltziert werden bzw. ganz unten in sein in der Instanceorder)
    5. }
    6. tropfenanzahl = 0;


    GML-Quellcode

    1. //step event:
    2. tropfenanzahl ++;
    3. tropfen_x[tropfenanzahl] = irandom(room_width);
    4. tropfen_y[tropfenanzahl] = -16 //je nachdem wie groß das Sprite für den Tropfen ist
    5. tropfen_aktiv[tropfenanzahl] = 1;


    GML-Quellcode

    1. //draw event
    2. for (var i = 1; i <= tropfenanzahl; i++)
    3. {
    4. tropfen_y[i] += 4 //4 ist der speed mit dem die Tropfen zu Boden fallen
    5. if grid[# floor(tropfen_x[i] / 32), floor(tropfen_y[i] / 32)] = 1 tropfen_aktiv[i] = 0; //hier werden Tropfen zerstört die auf dem Boden landen
    6. if tropfen_aktiv[i] = 1 draw_sprite(spr_Tropfen, 0, tropfen_x[i], tropfen_y[i]); //hier werden die Tropfen gezeichnet
    7. }



    Soweit so gut jetzt fällt mir nur gerade auf,dass ich nicht bedacht hab, dass der Array irgendwann an sein Limit gerät und die Schleife auch irgendwann so groß wird dass die CPU überlastet wird.
    Darum schreiben wir noch un´ten ins step event:

    GML-Quellcode

    1. if tropfenanzahl > 255 tropfenanzahl = 0// hab das alles nicht getestet aber das dürfte jetzt den unschönen Effekt haben, dass es irgendwann plötzlich aufhört zu regnen und dann wieder anfängt


    Ja ich hab nicht zu ende überlegt und dachte ich wäre schlau. Vielleicht hat grad jemand anderes ne Idee wie man den Übergang nahtlos machen kann.
    Hoffe mein Code hilft den einem oder anderen und bringt den einen oder anderen GML-Anfänger was bei. :)