Surface Transparenz mit Tiles

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

  • Surface Transparenz mit Tiles

    Hallo
    Ich habe eine Frage zu diesem Thread, und da ich meinen Beitrag aus mir unbekannten Gründen nicht editieren kann, stelle ich sie hier nocheinmal.
    Das Example von Superdaniel funktionioniert hervorragend, jedoch möchte ich den Selben Effekt mit einem Tileset erreichen. D.h. ich möchte ein Art "Sicht-Loch" um meinen Spielcharakter machen, dass in einem bestimmten Bereich um ihn jede Wand (bestehen aus Tiles) durchsichtig werden lässt.
    In dem Example wird das ja nur an einem Background gezeigt.

    Hoffe es war verstädnlich,
    Toshiro
  • Nichts einfacher als das ^^. Das geht eigentlich mit allem (auch Titles). Das ist nämlich egal. Ich finde das Example sowieso etwas "kompliziert" (in ""). Warum einfach, wenn auch kompliziert geht ;).

    Einfach eine Surface erstellen und mit schwarz füllen.
    Dann ein Sprite das ein tranzparentes Loch hat in jedem Step auf die Surface zeichnen.
    Natürlich auch jedesmal wieder mit schwarz füllen. Sonst löscht du die schwarz nur komplett.

    Ich lade nacher ein Example hoch. Da ich grade nicht korrekt mit Surface zeichnen kann.

    EDIT: So hier nun ein Example. Ich habs jetzt noch mit blend_mode gemacht. Da dies 100% funktioniert. Zumindest hab nicht nur ich Probleme mit der tranzparenz. Das liegt aber nicht am programmieren.
    Jedenfalls kannst du dir eins merken. Wenn du auf einer Surface mit tranzparenten "Farben" zeichnest also alpha. Dann wird so zu sagen der Bereich von der Surface gelöscht und du kannst duchgucken.
    Als Hindergrung habe ich einfach ein Background genommen. Aber da kannste alles Zeichnen (dein ganzes Spiel). Achte nur darauf dass das Object mit der Surface und dem Loch immer ganz vorne ist (also zb. depth=-100000000).
    Du kannst auch das schwarz mit einer Textur ersetzen. Es muss auch nicht nur ein schlichter Kreis sein.
    Dateien
    • easyguckloch.rar

      (746,61 kB, 337 mal heruntergeladen, zuletzt: )
    [Signature is loading ... Please use while you waiting the thanks-button. If it is enabled. -->]

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von DAG ()

  • Erstmal danke für die Mühe, aber entweder bin ich zu dumm, um das Example zu verstehen, oder du hast mich falsch verstanden.
    Ich habe in meinem Spiel ein Tileset, in dem alle Wände sind und die ich im RoomEditor platziere. Jetzt möchte ich zu Beginn des Spiels diese Tiles auf ein Surface zeichnen (Nur die Tiles, nicht den Background). Damit kann ich sie später getrennt vom restlichen Spiel behandeln (z.B. damit in einem bestimmten Umkreis um den Spieler alle Wände durchsichtig werden).
    Aber mit

    GML-Quellcode

    1. draw_background(back,0,0);
    kann man nur ganze Backgrounds auswählen, und nicht die Anordnung der Tiles im Room.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Toshiro ()

  • Ich weiß jetzt immernoch nicht ganz, was genau du willst.
    Du willst also schon alles sehen (nicht verstecken), außer die Wände (tiles)? Du willst dessen Sichbarkeit kontrollieren? Nur um den Spieler herum?

    Also aus dem Stegreif würde ich sagen, das du einzelne Tiles mit einer Draw-Funktion nicht zeichnen kannst, und somit nicht zur Surface hinzufügen kannst.
    Aber es gibt auch hier mehrere Möglichkeiten.

    Am besten du speicherst diese Wände als Sprite oder einzeln als Background.
    Du kannst denn auch entscheiden ob du überhaupt eine Surface zeichnen willst. So wie ich das verstenden habe, ist dies nämlich nicht notwendig.
    Als Objekt mit der Wandtexture (Sprite) kannst du dieses mittels alphawert verstecken. Sogar im Radius zum Spieler.

    GML-Quellcode

    1. //zb:
    2. image_alpha=1/point_distance(x,y,player.x,player.y);


    Wenn du dennoch Surface verwenden willst, musst du diese Wände entweder einzeln zeichnen mit xy-koordinaten. Oder die Instancen (wände) einzeln abfragen (xy) und zeichnen. Oder Einen Raum zeichnen mit nur diesen Wänden (oder halt alles unsichtbar außer den Wänden) und ein interner Screenshot machen. Und dessen Hintergrund mit einer blend funktion tranzparent machen.
    [Signature is loading ... Please use while you waiting the thanks-button. If it is enabled. -->]
  • Benutzer online 1

    1 Besucher