Hilfe mit Beleuchtung

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

  • Hilfe mit Beleuchtung

    Hi Folk's, lange nimma geschrieben, huh?
    Also folgendes:
    Ich mach grade ein game, das soll Folgendermaßen sein:
    ganz dunkler raum.
    Aber um die Spielfigur und den Mauszeiger soll ein weißes licht sein, wo man eben durchgucken kann... naja, ihr wisst schon ^^ :D
    Ich fand ein Tutorial, das war auch nicht schlecht, aber allerdings ging es um "Punkte" zum durchgucken in der landschaft. Ich dachte das bezieh ich dann einfach auf die Maus, aber war ja klar: Es geht nicht :evil:
    Es kommt immer in ungefähr sehr langer fehler.
    Naja, das TUT hier:

    Beleuchtung

    mhm, kann jemand helfen PLZ?
    thanxen!
    Hast du schon Mich , meinen freund und seinen Freund
  • Na, dann lasse das Licht-Objekt doch einfach der Maus bzw. dem Objekt folgen. Dazu bräuchtest du zwei verschiedene Licht-Objekte.


    Beides in Step-Event () der Licht-Objekte:

    Maus:

    GML-Quellcode

    1. x = mouse_x
    2. y = mouse_y


    Objekt:

    GML-Quellcode

    1. x = *Charakterobjekt*.x
    2. y = *Charakterobjekt*.y
    Dieser Beitrag ist Spam.
    | |
    | |
    \. ./
    \/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von F.S. ()

  • Mhm, danke soweit.
    aber ich verstehe etwas nicht, in dem TUT...
    Und zwar das hier nicht:

    [...]aber eine Depth von 1, damit es Anzeigen welche meistens eine Depth von 0 haben nicht überdeckt. [...]

    Wie gibt man etwas eine "Depth" ?

    und:
    [...]Jetz beginnen wir mit den Scripts, und erstellen schonmal das erste! Es heißt "light_init" und setzt das Beleuchtungssystem in Gang. Reingeschrieben wird folgender Code:

    Das versteh ich garnich

    [...] Jetzt kommt das Zweite und somit auch schon das schwerste der 3 Skripts. Es heist "light_refresh", und beinhaltet folgenden Code


    ja, in welchem Event? Create, oder?
    [...]Im Step-event des Light-Controller wird eingetragen, dass es das script "light_refresh" aufruft.

    Doll :happy: Aber wie?
    Hast du schon Mich , meinen freund und seinen Freund

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Derlord93 ()

  • Den Dephtwert eines Objektes kannst du im Objekteditor links in einem Feld, in dem du die Dephtzahl eintragen kannst, einstellen.

    Scripts rufst du auf, indem du in GML einfach den Scriptnamen mit Klammern dahinter schreibst (*Scriptname*()).

    Die Scricts beinhalten nur Code und werden später in Objekten aufgerufen.
    Dieser Beitrag ist Spam.
    | |
    | |
    \. ./
    \/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von F.S. ()

  • Script != Piece of Code
    Scripts werden separat angelegt und wie Befehle behandelt.
    gm-d.de/help/211_00_scripts.html

    Depth ist der Tiefenwert eines Objektes, welcher angibt ob etwas das Sprite des Objektes verdeckt, oder von ihm verdeckt wird.
    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
  • bei dir wäre es warscheinlich klüger das ganze einfacher zu lösen

    da du nur ein licht hast geht das ganze auch ohne surfaces
    was von der performance her wesentlich besser ist

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von iTeM ()

  • Ganz einfach:
    Auf mouse_x,mouse_y und player.x,player.y jeweils ein Sprite lokalisieren mit einer Depth von 100 (oder irgendwie so, dass es UNTER allem anderen liegt).
    Dieses Sprite ist einfach nur ein weißer Kreis, der Rest des Raumes ist schwarz.

    Nun werden alle anderen Objekte mit dem Blending Mode "bm_subtract" gezeichnet.
    Sie werden also nur dann gezeichnet, wenn sie selber dunkler sind als der Untergrund.

    Dann kann man im Nachhinein sogar noch die Helligkeit des Lichtes variieren, indem man das ursprünglich weiße Sprite hellgrau, bis hin sogar dunkelgrau (an einigen Stellen) macht.

    Edit: Example angehängt.
    Leider ist mir dabei aufgefallen, dass der Blend Mode die dumme angewohnheit hat, alle Sprites negativ anzuzeigen.
    Ich schätze mal es gibt 'ne ganz einfache Lösung für das problem, nur da ich eigentlich nie mit Blend Modes arbeite, weis ich die gerade nicht.
    Ich habe es hier dadurch gelöst, dass ich die Room-Sprites einfach im Sprite-Editor in negative umgewandelt habe.
    Dateien
    • light.zip

      (32,7 kB, 145 mal heruntergeladen, zuletzt: )
    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
  • Huppala, du hast Recht....
    Das lag aber nicht daran, dass ich nicht aufgepasst habe, sondern viel mehr,
    dass ich davon ausgegangen war, dass auch das funktionieren würde.

    Das ist natürlich in der Tat ärgerlich, jedoch keines falls ein Grund sich mit Surfaces herumzuschlagen. ;)

    Erstelle einfach ein neues Sprite (ganz in weiß) und nenne es spr_light2.
    Füge nun einfach in das Create Event noch die Zeile

    GML-Quellcode

    1. sprite_set_alpha_from_sprite(spr_light2,spr_light);

    hinzu, und ersetze noch im Draw Event

    GML-Quellcode

    1. draw_sprite(spr_light,-1,x,y);
    durch

    GML-Quellcode

    1. draw_sprite(spr_light2,-1,x,y);
    , dann funktioniert's auch mit mehreren Lichtquellen. ;)
    (Diesmal von mir getestet.)
    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