Maskenzuweisung im Code...

  • Maskenzuweisung im Code...

    Hallo. Hier fragt wieder einmal der, der gerne dumme Fragen stellt...

    Und zwar geht es diesmal um die Zuweisung einer Maske.

    Mein Maxi besteht aus zwei Frames - eines für rechts, eines für links- Beide Frames habe ich als EIN Sprite dargestellt und in der Steuerungsoption (zB für links) folgenden Code eingefügt:

    image_single=1;
    global.blickrichtung=1;
    if place_free(x-5,y) x -= 5;

    Die letzte Zeile deswegen, weil ich wieder einmal - schlau wie ich bin - mit unzentrierten Sprites arbeite. Egal, darum geht's nicht. Rechts wäre in diesem Fall image_single 0.

    Allerdings haätte ich dem Objekt gerne eine jeweilige Maske zugewiesen. Habe die Masken für links und rechts derweil als jeweils eigenständiges Sprite hochgeladen, könnte diese aber natürlich - so wie das Sprite meines Maxis - als zwei-Frame-Sprite darstellen.

    Was ich nur wissen möchte - was muss ich hier zusätzlich einfügen, um dem jeweilgen Image_single die richtige Maske zuzuweisen?

    Bräuchte also einen Befehl wie

    image_single=1; mask "spr_mask_left" oder so - den gibt es aber nicht ;)
    Mit mask_image habe ich's auch nicht hinbekommen. Oder kann ich ebenfalls nur ein Object als Maske dem Object Maxi zuweisen?

    Vergebt mir, wenn ich mich wieder einmal viel komplizierter ausdrücke als es notwendig wäre - kann nicht anders ;)

    Bitte helft mir - wäre für jede Auskunft sehr dankbar!
    Danke.
  • RE: Maskenzuweisung im Code...

    Dieser Befehl müsste doch die Maske zuweisen.

    GML-Quellcode

    1. mask_index=spr_mask_left;

    Andererseits kann ich dir eigentlich empfehlen, einfach eine rechteckige Maske für beide Richtungen zu nehmen. (Precise Collision Checking bei den Sprites deaktivieren und manuell eine Bounding Box eingeben)
    Einige meiner Spiele:
  • Rechteckig ist aber auch nur zu empfehlen, wenn man sich nur in die üblichen 4 Richtungen (rauf, runter, links, rechts) bewegen kann. Ansonsten wäre wohl ein gefüllter Kreis ratsam. Damit hab ich bis jetzt die besten Erfahrungen gemacht.

    €dit: Mir gehts auch oft so. Man weiss, dass es da einen bestimmten Befehl gibt, aber man hat keine Ahnung, wie er nochmal hiess. Und wenn man das nicht weiss, findet man ihn auch nicht in der Hilfe.^^ Ein Teufelskreis...
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.

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

  • Ja stimmt Mauge. Und vorallem versteh ich's nicht... Denn ich könnte schwören, es genauso probiert zu haben. Naja, vielleicht liegt's an meiner momentanen Augenentzündung (seh nur die Hälfte und die andere ist möglicherweise falsch geschrieben) :) - DANKE Interceptor.

    Dass sich meine Sprites zu einander nicht mittig verhalten, ist eine dumme Sache von mir. Aber sind bereits zuviele Sprites, um das zu ändern... Doch für links und rechts DIESSELBE Maske anzuwenden, würde in meinem Fall so oder so nicht funktionieren, da meine Sprites asymmetrisch sind.

    Doch nun habe ich NOCH ein Frage (sorry, wenn ich 'mal in Fahrt bin...)

    Verzweiht mir, ich glaube, so 'was bereits vor langer Zeit 'mal im Chat gefragt zu haben - bin damals aber nicht schlau geworden (was durchaus an mir liegern kann)

    Und zwar - könnte ich es lösen, dass ich dem Maxi zB. für die Wandkollisionen eine andere Maximaske zuweise als für Kollisionen mit Gegnern? Warum? Weil ich möchte, dass das Maxi früher am Rande des Abgrunds der Plattformen abstürzt - fand es auch schon bei Commodore-Games immer recht seltsam, dass das Maxerl mit einem Pixel Zehe an der Kante stehen bleiben konnte - mein Maxi ist schliesslich kein Turmspringer (vorallem, da heute ein Pixel noch viel kleiner ist, sieht es noch bescheuerter aus).

    Doch andererseits soll das Maxi nicht erst dann draufgehen, wenn der Feind schon zu einem Drittel in ihm steckt...


    Bräuchte also ZWEI Maskenzuweisung für ein Sprite. Maskenzuweisung 1 bei Kollision mit A, B, C und die andere für Kollision mit D, E, F..

    DANKE für JEDE Antwort!


    Hoppla... während des Schreibens ist mir etwas eingefallen... ich könnte ja zB. der Plattform AUCH eine Maske zuweisen :)
    Maxi ist sowieso gross genug um zwischen Plattformen mit Maske nicht durchrutschen zu können...

    Sorry, wenn ich den gesamten Beitrag jetzt nicht lösche - ich möchte, dass Ihr seht, wie umständlich ein Noob (ich werde immer einer bleiben) denken kann.

    Übrigens hat mir das Forum schon oft geholfen, indem ich nur versucht habe, mein jeweiliges "Problem" zu schildern. Denn spätestens DANN beginnt man plötzlich WIRKLICH zu denken...

    DANKE - ich beende den Thread im Laufe der nächsten Tage (vielleicht habe ich ja doch noch eine Frage zu dem Thema)

    Sorry. für mein Selbstgespräch und bis dann... ;)

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

  • ja das könntest du so lösen:

    if(distance_to_object(obj_gegner)<wert) {mask_index=spr_andere_mask;}
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.