Sprite verkleinern

  • Sprite verkleinern

    Ich wollte einen Objekt machen, bei dem der Sprite sich in jedem Schritt(Step) ein wenig verkleinert und wenn die Größe 0 beträgt, soll es gelöscht werden (destroy).
    Zuerst hab ich es damit probiert:
    Step:if (sprite_width=0)
    {instance_destroy()}
    else
    {sprite_width-=1;sprite_height-=1}
    Als ich es ausprobiert habe kam diese error Meldung:
    ___________________________________________
    ERROR in
    action number 1
    of Step Event
    for object object1:

    Error in code at line 4:
    {sprite_width-=1;sprite_height-=1}

    at position 3: Cannot assign to the variable


    Dann hab ich das probiert:
    Step:if (sprite_width=0)
    {instance_destroy()}
    else
    {image_xscale-=1;image_yscale-=1}
    Das hat allerdings den Sprite vergrößert und nicht verkleinert.
    Kann mir jemand sagen wie man das macht?

    Danke im Vorraus
  • GML-Quellcode

    1. if (image_xscale>0) {
    2. image_xscale-=0.05; // 0.05 ist wie viel der pro step schrumpft
    3. image_yscale-=0.05;
    4. } else {
    5. instance_destroy();
    6. }


    image_xscale und image_yscale stretchen das sprite

    Wenn du das sprite nur drawst, kannst du auch draw_sprite_ext() benutzen.

    MfG SDX
  • Auszug aus der Hilfe:
    sprite_width* Gibt die Breite des sprites an. (Dieser Wert ist unveränderbar aber möglicherweise willst du ihn trotzdem benutzen).
    sprite_height* Gibt die Höhe des sprites an. (Auch dieser Wert ist unveränderbar.)
    Du wirst wohl oder übel image_xscale und image_yscale benutzen müssen.

    image_xscale Ein Skalierungsfaktor, um die Bilder grösser oder kleiner darzustellen. Ein Wert von 1 gibt die Normalgrösse an. Ein Ändern der Skalierung beeinflusst auch die Bildbreite und die "collision events", wie du vermutlich schon erwartet hast. Ändern der Skalierung kann verwendet werden, um 3D-Effekte zu simulieren. Benutze -1 um das Sprite horizontal zu spiegeln.
    image_yscale Dasselbe nur für die Höhe.

    Beispiele:

    GML-Quellcode

    1. //Sprite ist halb so breit und wird gespiegelt
    2. image_xscale = -0.5
    3. image_yscale = 1


    GML-Quellcode

    1. //Sprite ist längs gestreckt
    2. image_xscale = 1
    3. image_yscale = 1.5


    Die Lösung:

    GML-Quellcode

    1. if image_xscale == 0 instance_destroy();
    2. else
    3. image_xscale -= 0.025
    4. image_yscale -= 0.025


    /edit Mist zu spät...

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01