Animationen

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

  • Hallo allerseits! :D

    Ich habe ein kleines Problem.
    Der Charakter soll erst eine Animation durchlaufen, welche am Ende, nach 3 Sekunden, zu einer anderen wechselt. Diese letzte Animation wird aber nie ausgeführt. Ich vermute, dass es an der Abfrage im Draw-Event liegt. Hierzu der Code...

    Ablauf:
    Erst kniet sich der Char hin (Draw-Event: animationhinknien = 1). Dies geschieht ohne Probleme.
    Wenn animationhinknien == 1, dann wird Alarm0 in 3 Sekunden aktiviert, in welchem animationhinknien auf 0 und animationverarzten auf 1 gestellt wird.

    Doch die letzte Animation wird nie ausgeführt. Stattdessen wiederholt sich ständig die Hinknien-Animation.

    obj_player
    #CREATE :event_create:

    GML-Quellcode

    1. x = 740;
    2. y = 688;
    3. animationhinknien = 0;
    4. animationverarzten = 0;
    5. starr = 0;
    6. view_object[0] = obj_player;
    7. view_hborder[0] = view_wview[0] / 2;
    8. view_vborder[0] = view_hview[0] / 2;


    #ALARM0 :event_timer:

    GML-Quellcode

    1. animationhinknien = 0;
    2. animationverarzten = 1;
    3. alarm[0] = 0;


    #DRAW :event_draw:

    GML-Quellcode

    1. if (global.incar == false) {
    2. if (keyboard_check(ord("W"))) {
    3. speed = 3;
    4. image_speed = 0.5;
    5. draw_sprite_ext(spr_player_rennen,-1,x,y,0.6,0.6,direction,c_white,1);
    6. }
    7. else if (keyboard_check(ord("S"))) {
    8. speed = -3;
    9. image_speed = 0.5;
    10. draw_sprite_ext(spr_player_rennen,-1,x,y,0.6,0.6,direction,c_white,1);
    11. }
    12. else {
    13. speed = 0;
    14. image_speed = 0.25;
    15. draw_sprite_ext(spr_player_stehen,-1,x,y,0.6,0.6,direction,c_white,1);
    16. }
    17. if (keyboard_check(ord("A"))) {
    18. direction += 5;
    19. }
    20. if (keyboard_check(ord("D"))) {
    21. direction -= 5;
    22. }
    23. if (place_meeting(x,y,obj_player_auto) && keyboard_check_released(ord("F"))) {
    24. global.incar = true;
    25. instance_destroy();
    26. }
    27. }
    28. if (place_meeting(x,y,obj_patient1) && global.dialogbox == 0 && keyboard_check_released(ord("F"))) {
    29. instance_create(x,y,obj_dialogbox);
    30. instance_create(x,y,obj_behandlung_bodycheck);
    31. instance_create(x,y,obj_behandlung_anamnese);
    32. instance_create(x,y,obj_behandlung_magillzange);
    33. instance_create(x,y,obj_behandlung_rea);
    34. instance_create(x,y,obj_behandlung_rr);
    35. instance_create(x,y,obj_behandlung_bz);
    36. instance_create(x,y,obj_behandlung_pulsoxy);
    37. instance_create(x,y,obj_behandlung_defi);
    38. instance_create(x,y,obj_behandlung_o2);
    39. instance_create(x,y,obj_behandlung_ambu);
    40. instance_create(x,y,obj_behandlung_rueckatmung);
    41. instance_create(x,y,obj_behandlung_absaugen);
    42. instance_create(x,y,obj_behandlung_abtasten);
    43. instance_create(x,y,obj_behandlung_pupillenleuchte);
    44. instance_create(x,y,obj_behandlung_cpr);
    45. instance_create(x,y,obj_behandlung_fragezeichen);
    46. instance_create(x,y,obj_behandlung_stethoskop);
    47. instance_create(x,y,obj_behandlung_verband);
    48. instance_create(x,y,obj_behandlung_medikamente);
    49. instance_create(x,y,obj_behandlung_ivzugang);
    50. instance_create(x,y,obj_behandlung_traubenzucker);
    51. instance_create(x,y,obj_behandlung_coolpatch);
    52. instance_create(x,y,obj_behandlung_stifneck);
    53. instance_create(x,y,obj_behandlung_rettungsdecke);
    54. global.dialogbox = 1;
    55. starr = 1;
    56. animationhinknien = 1;
    57. }
    58. else if (keyboard_check_released(ord("F")) && global.dialogbox == 1 && starr == 1) {
    59. global.dialogbox = 0;
    60. starr = 0;
    61. animationhinknien = 0;
    62. animationverarzten = 0;
    63. }
    64. if (starr == 1) {
    65. speed = 0;
    66. direction += 0;
    67. x += 0;
    68. y += 0;
    69. }
    70. //Animationen
    71. if (animationhinknien == 1) {
    72. draw_sprite_ext(spr_player_hinknien,-1,x,y,0.6,0.6,direction,c_white,1);
    73. alarm[0] = room_speed*3;
    74. }
    75. if (animationverarzten == 1) {
    76. draw_sprite_ext(spr_player_verarzten,-1,x,y,0.6,0.6,direction,c_white,1);
    77. }
    Alles anzeigen


    Es muss irgendwo hier im Draw-Event der Teufel drinn' sein. Ich bitte um Hilfe. Vielen Dank.

    Lg
    Michael

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

  • Michaelp800 schrieb:


    GML-Quellcode

    1. //Animationen
    2. if (animationhinknien == 1) {
    3. draw_sprite_ext(spr_player_hinknien,-1,x,y,0.6,0.6,direction,c_white,1);
    4. alarm[0] = room_speed*3;
    5. }


    Anstatt animationhinknien im Alarm-Event auf 0 zu setzen musst du das direkt hier im Codeblock machen, denn ansonsten wird alarm[0] ja permanent auf room_speed*3 gesetzt.
    Wenn ich jetzt nichts übersehen habe ...

    edit/

    Bzw. auf 2 setzen um es nachher im Alarm-Event auf 0 zurückzusetzen:

    GML-Quellcode

    1. //Animationen
    2. if (animationhinknien == 1) {
    3. draw_sprite_ext(spr_player_hinknien,-1,x,y,0.6,0.6,direction,c_white,1);
    4. animationhinknien = 2
    5. alarm[0] = room_speed*3;
    6. }


    Evtl. müssen da noch ein paar Abfragen angepasst werden.

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

  • GELÖST
    Ich musste das Alarm-Event einfach woanders verwenden.

    GML-Quellcode

    1. global.dialogbox = 1;
    2. starr = 1;
    3. animationhinknien = 1;
    4. alarm[0] = room_speed*3; //2. Hier einfügen
    5. }
    6. else if (keyboard_check_released(ord("F")) && global.dialogbox == 1 && starr == 1) {
    7. global.dialogbox = 0;
    8. starr = 0;
    9. animationhinknien = 0;
    10. animationverarzten = 0;
    11. }
    12. if (starr == 1) {
    13. speed = 0;
    14. direction += 0;
    15. x += 0;
    16. y += 0;
    17. }
    18. //Animationen
    19. if (animationhinknien == 1) {
    20. draw_sprite_ext(spr_player_hinknien,-1,x,y,0.6,0.6,direction,c_white,1);
    21. //alarm[0] = room_speed*3; //1. hier rausnehmen
    22. }
    23. if (animationverarzten == 1) {
    24. draw_sprite_ext(spr_player_verarzten,-1,x,y,0.6,0.6,direction,c_white,1);
    25. }
    Alles anzeigen