Spieleranimationen

  • GM 8

    Spieleranimationen

    Hi,
    ich habe ein Problem. Ich arbiete momentan an einem großen Projekt. Ich habe jedoch Probleme mit den Sprites des Spielers. Folgender Code wird im Step-Event abgearbeitet:

    GML-Quellcode

    1. success = 0;
    2. if
    3. keyboard_check(vk_right)
    4. {
    5. if
    6. jump = 0
    7. {
    8. if
    9. vspeed > 0
    10. {
    11. sprite_index = global.player_fall_r
    12. success = 1
    13. }
    14. else
    15. {
    16. sprite_index = global.player_jump_r
    17. success = 1
    18. }
    19. }
    20. else
    21. {
    22. sprite_index = global.player_walk_r
    23. success = 1
    24. }
    25. }
    26. if
    27. keyboard_check(vk_left)
    28. {
    29. if
    30. jump = 0
    31. {
    32. if
    33. vspeed > 0
    34. {
    35. sprite_index = global.player_fall_l
    36. success = 1
    37. }
    38. else
    39. {
    40. sprite_index = global.player_jump_l
    41. success = 1
    42. }
    43. }
    44. else
    45. {
    46. sprite_index = global.player_walk_l
    47. success = 1
    48. }
    49. }
    50. if
    51. !keyboard_check(vk_right) && !keyboard_check(vk_left) && sprite_index = global.player_walk_r
    52. {
    53. sprite_index = global.player_idle_r
    54. }
    55. if
    56. !keyboard_check(vk_right) && !keyboard_check(vk_left) && sprite_index = global.player_walk_l
    57. {
    58. sprite_index = global.player_idle_l
    59. }
    60. if
    61. hspeed = -0.1 or hspeed = -0.2
    62. {
    63. hspeed = 0
    64. }
    65. if (keyboard_check_pressed(vk_space)) && jump=1
    66. {
    67. if place_free(x,y+1)
    68. {
    69. if (keyboard_check(vk_left) && !place_free(x-1,y)) or (keyboard_check(vk_right) && !place_free(x+1,y))
    70. {
    71. exit;
    72. }
    73. }
    74. vspeed=-10
    75. }

    Erklärungen:
    success ist eine Variable, mit der ich teste, ob beim Springen ein passender Sprite gefunden wurde.
    jump ist die Variable, die angibt, ob der Spieler auf dem Boden ist. 1 = ja, 0 = nein
    Die Sprites an sich werden alle extern geladen, das funktioniert.

    Mein Problem ist folgendes. Beim Springen (Leertaste) werden die Sprites nur dann gesetzt, wenn man sich bewegt. D.h. wenn man sich nicht bewegt und einfach springt, bleibt der Sprite player_idle. Könnte mir da wer helfen? Ich hab das schon mit !keyboard_check(vk_left) && !keyboard_check(vk_right) && keyboard_check(vk_space) probiert, das geht aber nicht, da man ja Space nicht gedrückt hält.
    Unireverse erscheint vermutlich 2015. Das ist ein serious Project!

    GML-Quellcode

    1. if
    2. global.love_to_game_maker > 0
    3. {
    4. :3 = 1
    5. }
    6. else
    7. {
    8. gtfo = 1
    9. }

    Also ich für deinen Teil würde den Code mal richtig schön ausrichten, damit man das auch sinnvoll lesen kann... mit einrücken und so .... :P

    Warum probierst du es nicht mit einer Hilfsvariable?

    z.b.

    GML-Quellcode

    1. if (!keyboard_check(vk_left) and !keyboard_check(vk_right)) and (keyboard_check(vk_space) or jump_stand = true)
    2. {
    3. jump_stand=true
    4. sprite_index=.....
    5. if Player.y = Boden
    6. jump_stand = false
    7. }