Dunkelheit abhängig von Höhe des Spielers

  • Allgemein

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

  • Dunkelheit abhängig von Höhe des Spielers

    Ich steh gerade aufm Schlauch.
    Ich möchte die Helligkeit bzw. Dunkelheit anhand der Höhe des Spielers festlegen, weiß aber nicht recht wie.
    Ziel ist es mit 100% Dunkelheit zu beginnen. Und je höher der Spieler gelangt, desto sichtbarer wird sein Umfeld.

    Habe jetzt ein schwarzen Pixel über den Raum gezogen.

    GML-Quellcode

    1. draw_background_ext(bg_tiled_line,0,y,room_width,room_height,0,0,shadow_alpha)

    Aber wie definiere ich jetzt "shadow_alpha" richtig. Der Wert geht ja nur von null bis eins.
  • Dürfte einfach sein:
    shadow_alpha=(y-min)/(max-min)

    max und min durch die max- und min-y Position ersetzen.

    EDIT: Dies müsste an unterster Position 0 und an höhster Position 1 ergeben.
    Je nachdem ob du mit dem Wert nun den sichtbaren Hintergrund drawst oder ein schwarzes Rechteck zur Abdunklung, müsste ein "1-" davor.
  • Wenn Views nicht mitberechnet werden, dann hätte ich das so in der Art gelöst:

    GML-Quellcode

    1. shadow_alpha = 1-Spielerhöhe/room_height


    Spielerhöhe wird durch Raumhöhe geteilt, da Spielerhöhe kleiner als Raumhöhe ist und somit einen Wert zwischen 1 und 0 ausgibt solange sich der Spieler innerhalb des Raumes befindet.
    Da die Y-Achse im GM nach unten wächst, und der Raum somit am unteren Rand verdunkelt wäre, subtrahieren wir vom Ergebnis 1 um den Wert umzudrehen. Das gilt aber nur, solange der Spieler sich nicht unterhalb bzw. überhalb des Raumes befindet, da du dann Ergebnisse über 1 bzw. unter 0 erhalten würdest.

    Im Prinzip ist das dasselbe wie TrunX bereits geschrieben hat.


    -Skotchy
    "Ich sollte schlafen gehen"

    ~Pika-Pika~
  • Da musst du halt deinen Bildschirm unterteilen, z.B.:

    GML-Quellcode

    1. if player.y > 0 {shadow_alpha = 0;} // oder wie auch immer du deinen Spieler nennst, der sich im Raum bewegt.
    2. else if player.y > room_height/5 {shadow_alpha = 0.2;}
    3. else if player.y > 2*(room_height/5) {shadow_alpha = 0.4;}
    4. ...
    5. else if player.y > 4*(room_height/5) {shadow_alpha = 1;}


    kannst dann ja deine Abstände wählen wie du willst, aber so sollte es eigentlich funktionieren....

    geht bestimmt auch irgenwie eleganter, aber so würde ich es fürs erste probieren... ;)


    Gruß, Moe
  • Benutzer online 2

    2 Besucher