kurz animation abspielen

  • GM 8
  • Sorry, ich hab tatsächlich einen Fehler gemacht, da der Gamemaker es offenbar nicht akzeptiert, wenn der sprite _index ein string ist. ich versuch mal ein richtiges Beispiel zu programmieren und lads dann hoch- dauert vielleicht noch ne stunde.


    EDIT:
    So spiel ist fertig- war leider 2kb zu groß für einen anhang, also musste ich es auf yoyogames hochladen- hier ist der link
    yoyogames.com/games/131395-running-man

    P.S: Mit den Pfeiltasten laufen, mit Y schlagen und mit Leertaste rennen ( er kann aber nicht im rennen schlagen)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von J-L ()

  • hier nochmal direkt der code im step event:

    GML-Quellcode

    1. if(alarm[0]=-1)
    2. {
    3. if (speed>0 && keyboard_check(vk_right) + keyboard_check(vk_left) + keyboard_check(vk_up) + keyboard_check(vk_down)=0)
    4. {
    5. switch(dir)
    6. {
    7. case 0: sprite_index=stand0 break;
    8. case 1: sprite_index=stand1 break;
    9. case 2: sprite_index=stand2 break;
    10. case 3: sprite_index=stand3 break;
    11. case 4: sprite_index=stand4 break;
    12. case 5: sprite_index=stand5 break;
    13. case 6: sprite_index=stand6 break;
    14. case 7: sprite_index=stand7 break;
    15. }
    16. image_speed=1/4
    17. }
    18. if (vspeed*hspeed !=0) wait=1;
    19. wait=max(-1,wait-1)
    20. hspeed=(4+3*keyboard_check(vk_space))*(keyboard_check(vk_right)-keyboard_check(vk_left))
    21. vspeed=(4+3*keyboard_check(vk_space))*(keyboard_check(vk_down)-keyboard_check(vk_up))
    22. speed=min(speed,4+3*keyboard_check(vk_space)) // damit er diagonal nicht schneller läuft
    23. if( keyboard_check(vk_right) + keyboard_check(vk_left) + keyboard_check(vk_up) + keyboard_check(vk_down)>0 )
    24. {
    25. if (vspeed*hspeed !=0 || wait=-1) dir=direction/45;
    26. switch(dir)
    27. {
    28. case 0: sprite_index=walk0 break;
    29. case 1: sprite_index=walk1 break;
    30. case 2: sprite_index=walk2 break;
    31. case 3: sprite_index=walk3 break;
    32. case 4: sprite_index=walk4 break;
    33. case 5: sprite_index=walk5 break;
    34. case 6: sprite_index=walk6 break;
    35. case 7: sprite_index=walk7 break;
    36. }
    37. if(keyboard_check(vk_space)=true)
    38. switch(dir)
    39. {
    40. case 0: sprite_index=run0 break;
    41. case 1: sprite_index=run1 break;
    42. case 2: sprite_index=run2 break;
    43. case 3: sprite_index=run3 break;
    44. case 4: sprite_index=run4 break;
    45. case 5: sprite_index=run5 break;
    46. case 6: sprite_index=run6 break;
    47. case 7: sprite_index=run7 break;
    48. }
    49. image_speed=1/3
    50. }
    51. if(keyboard_check_pressed(ord('Y'))=true && keyboard_check(vk_space)=false)
    52. {
    53. switch(dir)
    54. {
    55. case 0: sprite_index=attack0 break;
    56. case 1: sprite_index=attack1 break;
    57. case 2: sprite_index=attack2 break;
    58. case 3: sprite_index=attack3 break;
    59. case 4: sprite_index=attack4 break;
    60. case 5: sprite_index=attack5 break;
    61. case 6: sprite_index=attack6 break;
    62. case 7: sprite_index=attack7 break;
    63. }
    64. image_speed=1/2
    65. image_index=0
    66. alarm[0]=26;
    67. speed=0;
    68. }
    69. }
    Alles anzeigen
  • danke,danke,danke,danke,danke :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup:



    jetz bau ich es nurnoch bei mir ein ....


    danke, stehst natürlich in den credits :DD


    EDIT:

    das funktioniert jetzt fast perfekt (bis auf paar kleine Fehler, die ich selbst beheben kann )
    allerdings, wie verringere ich denn die geschwindigkeit noch mehr?
    so wird bei mir nämlich nur das 1 und das letzte bild angezeigt :P

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

  • Also: wenn die schlagbewegung aus n subimages besteht und s sec dauern soll, dann musst du schreiben:

    GML-Quellcode

    1. image_speed= n*s/room_speed
    2. image_index=0 // nicht vergessen, sonst fängt die animation mit dem falschen image an
    3. alarm[0] = room_speed/s // oder image_speed*n


    P.S: falls du dich fragst, was dieses wait im code zu bedeuten hat: ohne das wait ist es sehr schwierig, diagonal stehen zu bleiben, weil man beide Pfeiltasten genau gleichzeitig (im selben step) loslassen muss. so hat man quasi mehr zeit)
    denk auch an das event alarm[0].
    du kannst auch, wenn du willst, direkt mein testspiel nehmen und darauf aufbauen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von J-L ()

  • Benutzer online 1

    1 Besucher