Rotierter Arm wechselt unerlaubt Position

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

  • Rotierter Arm wechselt unerlaubt Position

    Mir ist es schon fast peinlich euch mit so einer Banalität zu belästigen, doch anscheinend hab ich nen Schlaganfall erlitten denn anders kann ich mir nicht erklären wie ich nicht zu einer Lösung komme.. Spass beiseite, ich habe meinen spieler mit 23x51 großem Körper und gecenterten origin bei 11,25 .
    habe dann im Spieler
    var _xx = x - sprite_xoffset + 7;
    var _yy = y - sprite_yoffset + 14;
    var _dir = point_direction (_xx,_yy, mouse_x, mouse_y);
    draw_sprite_ext (spr_arm,0,_xx,_yy,1,1,_dir, c_white,1);

    habe zur Visualisierung an besagten ankerpunkten in den sprites einen roten punkt gesetzt. wenn die rotation nun 0 beträgt liegen die roten punkte übereinander wie es sein soll, rotiere ich den arm bspw. um 180° nach links ist nun der rote punkt im origin des arms einen pixel nach oben und einen nach links verschoben. Es verhält sich gleich ob ich nun den origin des armes bei 0,0 belasse oder anderweitig setze, selbst wenn das sprite nur ein 1px hoher strich ist verhält es sich gleich. Hoffe ihr versteht wie ich das meine, muss leider vom handy schreiben daher die Verhältnismäßig schlechte Ausführung des Textes. Danke im vorraus.
    Bilder
    • PicsArt_1437851642680.jpg

      249,91 kB, 551×542, 288 mal angesehen
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Ja ist klar, weil der rotationspunkt kein einzelner pixel ist sonder der punkt wo die beiden roten punkte in deinem Bild aneinander anecken. Damit das sauberer wird musst du wohl doe Auflösung erhöhen.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Bin nun auf die "Lösung", wenn man es so nennen kann, gestoßen. Ich habe meine Sprites sonst immer mit ungeraden Größen entworfen, also bspw. 31x31 anstelle von 32x32px um Sachen wie deb altbekannten image_xscale "bug" zu umgehen wo dann das Sprite um einen Pixel verschoben ist :sauf: . Nun verhält es sich aber ja so, dass GM als Mitte nicht die Mitte des Pixels, sondern die obere linke Ecke als origin nimmt, was nach etwas Nachdenken eigentlich auch nur logisch ist, da es keine halben Pixel gibt :headtouch:
    Also -> Sprite auf 200% hochskalieren und dann die untere rechte Ecke der "Mitte" als Origin nehmen. Dann den ganzen Zauber mit .5 scale wieder malen. Bin da eben schon draufgekommen bevor ich deine Antwort gesehen hab, denke aber du meintest das gleiche also Danke für die Antwort. :thumbsup:
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: