Surface offset?

  • GM 8
  • Surface offset?

    Guten Tag,

    Mein Problem ist Folgendes: Ich benutzte in meinem derzeitigen Projekt eine Oberfläche (surface), möchte diese jedoch drehen. Soweit auch ganz gut, da es extra eine Funktion dafür gibt. Das Problem nur an der ganzen sache ist, anderes als bei Sprites in denen man das Offset mittig setzten kann, damit sich ebend dieses auch um die eigene Achse dreht, geht dies nach längeren suchen anscheind nicht bei Oberflächen, welche sich damit nur um den Punkt (0|0) drehen lassen.

    Gibt es eine möglichkeit, der Oberfläche ein Offset zu verpassen, oder diese anderweitig mittig zu drehen?

    Gruß,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • Das ist ziemlich schwierig.
    Aber einer hat einen genialen Trick dafür gefunden. Wär nie darauf gekommen dass diese Methode funktioniert xD.

    GML-Quellcode

    1. /*
    2. ** Usage:
    3. ** draw_surface_center_rotate(id,x,y,rot)
    4. **
    5. ** Arguments:
    6. ** id surface id
    7. ** x,y draw position of center of surface
    8. ** rot degrees rotation
    9. **
    10. ** Returns:
    11. ** nothing
    12. **
    13. ** Notes:
    14. ** Draws a rotated surface centered at the given point.
    15. **
    16. ** GMLscripts.com
    17. */
    18. {
    19. var surface,sx,sy,angle,mx,my;
    20. surface = argument0;
    21. sx = argument1;
    22. sy = argument2;
    23. rot = argument3;
    24. mx = surface_get_width(surface)/2;
    25. my = surface_get_height(surface)/2;
    26. d3d_transform_stack_push();
    27. d3d_transform_set_identity();
    28. d3d_transform_add_translation(-mx,-my,0);
    29. d3d_transform_add_rotation_z(rot);
    30. d3d_transform_add_translation(sx,sy,0);
    31. draw_surface(surface,0,0);
    32. d3d_transform_stack_pop();
    33. }
    Alles anzeigen


    Schau auch hier: gmlscripts.com/

    Es gibt viele nützliche Skripte.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)