draw_sprite_ext - Zoomout nicht korrekt dargestellt

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

  • draw_sprite_ext - Zoomout nicht korrekt dargestellt

    Hallo Liebe Community,

    ich versuche ein herauszoomen effekt hinzubekommen aber scheitere hier an der Mathematischen berechnung.
    Nach Auswahl einen Characters und seines Kleids im Menü werden aus einzelnen Sprites im Draw event gezeichnet, so weit so gut.

    Nun wollte ich aber das bei der Auswahl der einzelnen Kleider ein rauszoomen auf 50% der Spritegröße stattfindet, das Kleid ausgewächselt wird und zurück auf die Büst Einstellung spring, allerdings bring ich es irgendwie nicht zusammen, da die Sprites nach dem wegzoomen einen zu großen abstand zueinander haben.

    Hat jemand einen tipp wo mein Denkfehler ist?
    LÖSUNG als Zwei Schritt Bild Tutorial unten:


    GML-Quellcode

    1. Für Code Siehe Beitrag von Miradur


    GML-Quellcode

    1. // Direkt aus meinen Projekt:
    2. //Backhair
    3. draw_sprite_ext(s_shao_backhair,0,995,479,global.zoomout,global.zoomout,0,c_white,1)
    4. //Neck
    5. var yy = lerp(637,479, -global.zoomout)
    6. draw_sprite_ext(s_shao_neck,0,995,-158 + yy,global.zoomout,global.zoomout,0,c_white,1)
    7. //Face
    8. var xx = lerp(981,995, -global.zoomout)
    9. var yy = lerp(410,479, -global.zoomout)
    10. draw_sprite_ext(s_shao_face,0,14+ xx,69 + yy,global.zoomout,global.zoomout,0,c_white,1)
    11. //AR
    12. var xx = lerp(1050,995,-global.zoomout)
    13. var yy = lerp(413,479, -global.zoomout)
    14. draw_sprite_ext(s_shao_alas_right,0,-55+ xx,66 + yy,global.zoomout,global.zoomout,0,c_white,1)
    15. //LR
    16. var xx = lerp(1056,995,-global.zoomout)
    17. var yy = lerp(390,479, -global.zoomout)
    18. draw_sprite_ext(s_shao_lr,0,-61+ xx,89 + yy,global.zoomout,global.zoomout,0,c_white,1)
    19. //TR
    20. var xx = lerp(1050,995,-global.zoomout)
    21. var yy = lerp(391,479, -global.zoomout)
    22. draw_sprite_ext(s_shao_tr,0,-55+ xx,88 + yy,global.zoomout,global.zoomout,0,c_white,1)
    23. //SR
    24. var xx = lerp(1091,995,-global.zoomout)
    25. var yy = lerp(408,479, -global.zoomout)
    26. draw_sprite_ext(s_shao_sr,0,-96+ xx,71 + yy,global.zoomout,global.zoomout,0,c_white,1)
    Alles anzeigen
    Bilder
    • Zoom.jpeg

      860,34 kB, 1.616×936, 293 mal angesehen
    • Zoom_ist.jpeg

      821,09 kB, 1.616×936, 308 mal angesehen
    • Zoom_Soll.jpg

      497,53 kB, 1.339×849, 371 mal angesehen
    • How_Teil1.png

      673,02 kB, 1.920×1.080, 321 mal angesehen
    • How_Teil2.png

      324,21 kB, 1.920×1.080, 340 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kids_As ()

  • Hi, ich dachte bei Deinem Problem sofort an lerp(), aber da ich damit noch nie gearbeitet habe und ich in Mathe eine Niete bin, konnte ich mich an die Werte nur durch Versuche, heran tasten. Da gibt es aber sicher auch noch eine Mathe-Lösung, die Dir vielleicht einer von den Profis nachreicht.
    Hier mal mein Beispiel:

    Quellcode

    1. // Objekt Control
    2. // Create - Event
    3. global.zoomout = 1
    4. global.zoomlvl = 0
    5. global.xx = 350
    6. global.yy = 250
    7. // Draw GUI - Event
    8. draw_text(10, 10, "Zoom-Out: " + string(global.zoomout))
    9. draw_text(10, 40, "Zoom-Lev: " + string(global.zoomlvl))
    10. // Mouse Wheel Up - Event
    11. global.zoomout += 0.1
    12. global.zoomlvl -= 10
    13. // Mouse Wheel Down - Event
    14. global.zoomout -= 0.1
    15. global.zoomlvl += 10
    Alles anzeigen



    Quellcode

    1. // Object Torso
    2. // Torso: b = 32, h = 64 und x = 400, y = 350
    3. draw_sprite_ext(sTorso,0,400, 350,global.zoomout,global.zoomout,0,c_white,1)
    4. // Object Neck
    5. // Neck: b = 16, h = 32 und x = 400, y = 302
    6. var yy = lerp(302, 350, -global.zoomout)
    7. draw_sprite_ext(sNeck,0,400, 48 + yy,global.zoomout,global.zoomout,0,c_white,1)
    8. // Object Head
    9. // Head: b = 48, h = 48 und x = 400, y = 262
    10. var yy = lerp(262, 350, -global.zoomout)
    11. draw_sprite_ext(sHead,0,400, 88 + yy,global.zoomout,global.zoomout,0,c_white,1)
    12. // Object Left Arm
    13. // LeftArm: b = 64, h = 16 und x = 352, y = 330
    14. var xx = lerp(352, 304, global.zoomout)
    15. var yy = lerp(350, 330, global.zoomout)
    16. draw_sprite_ext(sLeftArm, 0, 48 + xx, yy,global.zoomout,global.zoomout,0,c_white,1)
    17. // Object Right Arm
    18. // RightArm: b = 64, h = 16 und x = 448, y = 330
    19. var xx = lerp(400, 448, global.zoomout)
    20. var yy = lerp(350, 330, global.zoomout)
    21. draw_sprite_ext(sRightArm,0,xx, yy,global.zoomout,global.zoomout,0,c_white,1)
    Alles anzeigen


    Wenn Deine Objekte andere Maße haben, dann werden die Werte wohl nicht passen, aber in meiner Versuchsanordnung passen sie perfekt und man kann rein und raus zoomen, ohne dass die verschiedenen Körperteile auseinander driften oder sich überschneiden. Vielleicht hilft es Dir ja.



    Miradur
  • Danke Miradur das war die Lösung!

    Am Anfang haben mir die Variablen im lerp Schwierigkeit bereitet, da ich nicht wusste was mit was zu vergleichen ist, aber ich hab mich da ein bisschen rein gelesen und hin un her probiert und jetzt kann ich es für alle anderen problemlos übertragen.
  • Benutzer online 1

    1 Besucher