Orgin ändern

  • GM 8

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

  • Orgin ändern

    Hallo zusammen,
    Ich habe folgendes Problem:

    Ich will die ''orgin'' eines Sprites im Spiel ändern.
    Diese Änderung des Sprites soll aber nur bei einer Instance, die dieses Sprite verwendet benutzt werden.
    Ich mache das deshalb weil ich ein Objekt habe der eine Orgin von 0,0 hat,
    Jedoch möchte ich bei einem anderen Objekt diesen Sprite drehen und brauche dafür die Orgin im center des Objektes.
    Ausserdem:
    Das Sprite wird zuvor verkleinert.

    Ps.: Habe schon recherchiert und es selbst versucht, vielleicht weiß ja jemand wie man das macht, wenn das überhaupt möglich ist ?(

    mfg. hilfe:P
  • Wenn das so ist fällt dann vlt. jemand eine Lösung ein, wie ich ein Sprite trotz (0:0) Orgin, mittig drehen kann?

    Ps.: Danke Lizard771

    Edit:
    Ich habe herausgefunden das sich das Objekt immer im Kreis ( beim Rotieren ) bewegen müsste.
    Das ganze wäre also Theoretisch mit einem Path- System lösbar.
    Gibt es jedoch auch eine andere Möglichkeit die weniger Aufwand kostet.
    Denn das Objekt das sich drehen soll ist relativ klein.
    Ein kleines Example habe ich auch noch jemacht:
    Mithilfe der Maus könnt ihr den Center des Objektes makieren und somit die Bewegungen sehen,
    die es dazu machen müsste, um sich im gleichmäßig zu
    rotieren

    mfg.: hilfe:P
    Dateien
    • Example.gmk

      (9,76 kB, 255 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hilfe:P ()

  • Ich hab dir hier eine Funktion geschrieben (bzw. von jemandem geklaut ^^). Die Funktion hab ich hier gefunden und ist für Surfaces gemacht worden. Ein paar Veränderungen und sie funktioniert auch für Sprites. (Link)

    Hier die veränderte Version
    Script: draw_sprite_with_origin

    GML-Quellcode

    1. {
    2. var sprite,sx,sy,angle,mx,my;
    3. sprite = argument0;
    4. sx = argument1;
    5. sy = argument2;
    6. rot = argument3;
    7. mx = sprite_get_width(sprite)/2;
    8. my = sprite_get_height(sprite)/2;
    9. d3d_transform_stack_push();
    10. d3d_transform_set_identity();
    11. d3d_transform_add_translation(-mx,-my,0);
    12. d3d_transform_add_rotation_z(rot);
    13. d3d_transform_add_translation(sx,sy,0);
    14. draw_sprite_ext(sprite,image_index,0,0,image_xscale,image_yscale,0,image_blend,image_alpha);
    15. d3d_transform_stack_pop();
    16. }
    Alles anzeigen



    Ausführen tust du sie dann so:

    GML-Quellcode

    1. draw_sprite_with_origin(sprite_index,x,y,image_angle);

    Dein Sprite wird dann mittig gedreht. Hab dir ein Beispiel mithochgeladen

    MfG
    Rodrog
    Dateien
    • origin.gmk

      (9,8 kB, 253 mal heruntergeladen, zuletzt: )
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • 1. Warum kann der Sprite nicht für alle Instanzen einen mittigen Origin besitzen?
    2. Musst du dann eben 2 Sprites verwenden. Einer mit mittigen Origin und einen mit 0,0

    Edit: Nützliches Skript. Werde dafür wohl auch in Zukunft eine Verwendung finden. :P
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)
  • Wow Rodrog,
    vielen Dank.

    Dass klappt wirklich so wie ich es wollte :)

    Eine Fragen hätte ich da noch:

    Wäre es noch möglich dieses Objekt verkleinert sich drehend zu zeichnen?
    Oder muss das Objekt seine Größe beibehalten?
    Wenn das nicht geht ist das auch in Ordnung.

    mfg.: hilfe:P
  • Du kannst die Größe durch
    image_xscale bzw. mit
    image_yscale verändern

    Standardmäßig sind die Werte auf 1. Also 100%
    Wenn du den Wert auf 0.5 (50%) veränderst wird das Sprite nur mehr halb so klein gezeichnet.
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.