Transparente Formen zeichnen die sich überschneiden

  • GM 8
  • Transparente Formen zeichnen die sich überschneiden

    Hi,

    ich habe den Game Maker erst vor ca. einer Woche entdeckt und bin seitdem richig begeistert von dem Programm. Mit dem Spiel das mir schon seit Jahren im Kopf rumgeistert komme ich bisher auch gut voran und es nimmt langsam Form an.

    Anfangs habe ich einige Tutorials durchgemacht und bei Problemen in der Hilfe bzw. hier im Forum bisher immer ne Antwort gefunden.

    Nun gibts leider doch noch ein kleines Problem worauf ich bisher keine Lösung finden konnte:

    Das Spiel wird ein RTS das entfernt mit einer Mischung aus AoE und Civilization verglichen werden kann. Für diverse aktionen wird ein Einflussbereich der Eigenen Fraktion berechnet und auf Knopfdruck kann dieser angezeigt bzw. ausgeblendet werden.

    Den Einflussbereich zeichne ich mit folgendem Code ein:

    GML-Quellcode

    1. draw_set_alpha(0.25);
    2. draw_circle(x,y,var_territory_region,false);
    3. draw_set_alpha(1);


    Mein Problem ist nun:
    Wenn Gebäude nah beieinander liegen und sich der Einflussbereich überschneidet, verliert diese Schnittfläche an Transparenz.
    Ziel ist aber eine einheitliche Transparenz des gesamten Einflussbereichs.

    Ich hoffe jemand hier im Forum kann mir da weiterhelfen ;)
  • hi ... ich würde das ganze mit einem surface lösen ... erst alles darauf drawen und dem dan die tranzparenz geben ...

    nur leider kann ich dir nicht sagen wei es geht habe mich mit dem thema noch nicht so auseinander gesetzt hoffe dennoch ich habe dir nen hilfreichen ansazpunkt geliefert ^^

    --- edit ---

    hab mich mal dran gesetzt ... geht ... ^^
    ... ist zwar nicht auskomentiert aber ist auch nicht viel code ...

    eingfach mal game starten und "G" drücken mal sehen ob es das ist was du willst

    siehe anhang ...
    Dateien
    ---- wer fehler findet darf sie behalten ---

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

  • Super, genau so hab ichs mir vorgestellt, danke ;)

    Werd gleich mal versuchen das umzusetzen (hab mit surfaces bisher überhaupt keine Erfahrung).

    EDIT:
    So, nach langem herumtüfteln habe ich die Darstellung endlich wie gewünscht hinbekommen.
    Zuerst dachte ich, ich hätte irgend einen gröberen Fehler eingebaut da zwar keine Fehlermeldung gekommen ist aber nichts am Bildschirm angezeigt wurde.

    Das Problem war dass das Surface entsprechend der Position der Gebäude auf der gesamten Map erstellt wurde. Wenn man das Surface aber ausgibt beziehen sich die x & y Koordinaten der entsprechenden Funktion auf die Koordinaten innerhalb des Views und nicht auf die Koordinaten im Raum (im Nachhinein irgendwie logisch, steht aber in der Hilfedatei leider nirgends drin :( ).

    Falls jemand in Zukunft ein ähnlcihes Problem hat (besonders bei RTS-Games wo ständig gescrollt wird) und bei der Suche über diesen Thread stoplert, hier die Lösung:

    Von den Ausgabekoordinaten des Surface einfach die Position des aktuellen Views abziehen, dann bleibt das Surface an den 0/0 Koordinaten des Raums liegen.
    Bsp.: draw_surface_ext(var_surface,0-view_xview,0-view_yview,1,1,0,c_white,0.25);

    mfg
    G

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