Sprite Check / Sprite Collision richtig setzten?

    Sprite Check / Sprite Collision richtig setzten?

    Hallo,

    vielleicht ist es nicht die richtig Uhrzeit um eine etwas längere Frage zu stellen aber trotzdem ;) :

    Meine Frage bezieht sich darauf, ich habe 2 Sprites der eine ist größer als der andere.

    Wenn ich in einem Object die beiden Sprite (mit index_...) geben.
    Der eine Sprite ist größer als der andere deswegen wenn zuerst der kleinere Sprite kommt bugt der große sich in den Boden
    und wenn der große dran ist fällt der kleine runter.

    Meine Frage ist ohne jetzt was an den Sprites zu verändern (zB bei Origin) kann ich im Script was schreiben was bei beiden den tiefst Punkt nehmt?
    Damit bei richtig auf dem Boden starten können?


    LG
    "bei spritewechsel"
    {

    GML-Quellcode

    1. var tiefsterpunkt = sprite_get_height(sprite_index)

    "Object.y" = ("Boden.y"-tiefsterpunkt )
    }

    Wenn du origin eingestellt hast dann "Object.y" = ("Boden.y"-tiefsterpunkt + "origin.y")
    Weil sich zwar wasl dein sprite ändert aber nicht die collisionmask. Wenn du also im draw die gröé änderst dann tut das nicht viel ausser optisch die größe zu ändern , aber du musst mit zB image_xscale und yscale die größe der collisionmask mitändern.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    ich komme gerade nicht ganz mit hast du zwei einzelne Sprites, oder in eine Sprite zwei unterschiedlich große subimages geladen?
    Ansonsten aktiviere einfach das Kästchen rechts von Origin "Separate collision mask" und gehe auf "Modify Mask" dort stellst du die Mask dann auf "Precise" dadurch wird jedes Sprite eine genau Collision Mask erhalten und nicht mehr das ganze bild abdecken.
    Wenn du zwei unterschiedliche sprites hast dann sollte das einfach mit "

    GML-Quellcode

    1. mask_index = "hier deine Sprite ohne die Anführungszeichen";
    zu lösen sein.
    also wenn die Bilder gewechselt werden einfach den mask_index mitwechseln.
    Hallo,
    jetzt tun sich mir noch 2 Fragen auf:

    Mehrere 2D Spiele haben das nämlich auch.

    Das wenn er über oder unter dem Sprite keinen Platz ist, dann soll man nicht den Sprite wechseln können?
    (Weil man sich sonst fest bugt)

    Und wenn rechts und links, auf einer der Seiten nicht viel Platz ist dann schiebt er sich leicht in die andere Richtung
    damit man den nötigen Platz hat.
    (Wenn rechts und links keinen Platz hat sollte man dann auch nicht wechseln dürfen.)

    Ist etwas komisch erklärt aber ich hoffe man weiß ungefähr was ich meine.


    Zur zweiten wie kann ich abfragen ob ich mich in einem Object feststecke?
    Mit den collision_ funktionen kannst du checken ob du mit einem bestimmten obj kollidierst, zB über eine collision_line von Fuß bis etas über Kopf. Oder einem collision point rechts/links und dann dementsprechend den player verschieben oder den spritechange unterbinden(variable).

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)