Timing? *EDITIERT* mit Example! Brauche dringend hilfe!

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

  • Timing? *EDITIERT* mit Example! Brauche dringend hilfe!

    Ich N00b bins mal wieder. ;)

    Also meine Frage:

    Kann mal einer genau erklären, wie man ein ein event exakt ablaufen lässt? Also mit einer bestimmten Anzahl an sekunden? Hab mit Alarmclock rumbrobiert, hat aber nix gebracht.

    Angenommen, ich will, dass sobald man mit seinem Charakter eine Fahne berührt, erst ein effekt ausgelöst wird (mit create instance of objekt) und die Fahne sich dann nach 4 sekunden auflöst. Wie geht sowas?


    2te Frage:

    Eine Animation will einfach nicht klappen. Wenn man ne Taste drückt, wird eine Schlaganimation ausgelöst. Aber wie hört sie wieder auf?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Extinct Sun ()

  • Also zu dem Zeitenproblem:
    Eine Alarmclock wird nach nach x Steps ausgelöst. Sofern du nichts änderst werden pro Sekunde 30 Steps ausgeführt. Um 4 Sekunden zu erhalten muss du also 4*30, also 120 Steps als Alarmclock eintragen.

    Bei der Schlaganimation würd ich im Animation End Event (zu finden unter Other) einfach ne If Abfrage reinsetzen die checkt ob grade die Schlaganimation als sprite_index dran ist und wenn dann wieder das normale Sprite in den sprite_index setzen.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Achso, und die Geschwindigkeit kann man also bei Room Speed einstellen. Ok, thx.

    Das Problem mit der Animation ist etwas komplexer. Ich hab da folgendes:

    if obj_player.sprite_index = spr_idle_right
    {
    sprite_index = spr_att1r;
    image_speed = -1
    global_normal = false;
    global.angriff = true;
    }

    if obj_player.sprite_index = spr_idle_left
    {
    sprite_index = spr_att1l;
    image_speed = -1
    global_normal = false;
    global.angriff = true;
    }

    Und dann im Step Event:

    if global.angriff = true
    {
    if sprite_index = spr_att1r
    {
    if image_index = 5
    {
    sprite_index = spr_idle_right;
    global.link_normal = true;
    global.angriff = false;
    }
    }
    }

    if global.angriff = true
    {
    if sprite_index = spr_att1l
    {
    if image_index = 5
    {
    sprite_index = spr_idle_left;
    global.link_normal = true;
    global.angriff = false;
    }
    }
    }

    Edit: Die Animation wird komischerweise erstmal gar nicht ausgelöst. Nur das erste Bild.

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

  • Ich frage mich gerade warum du das da überhaupt verändern willst? Diese Variable darf eigentlich gar keinen negativen Wert erhalten, nur 0 und größer.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Original von Windapple
    Ich frage mich gerade warum du das da überhaupt verändern willst? Diese Variable darf eigentlich gar keinen negativen Wert erhalten, nur 0 und größer.


    Hab da anscheinend was verwechselt. Aber auch wenn ich auf 0,5 oder 2 ändere, bleibt das gleiche Problem.
  • Ja, arbeite mal mit dem Animation End Event, wie ichs dir geschrieben habe. Weil so kommst du z.B. bei 2 nie auf 5, sondern das geht dann immer so 0, 2, 4, 0, 2, 4, 0....
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Habs so gemacht. Klappt auch net.

    Ich glaube das Problem liegt darin, dass ich die Fox Engine benutze. Hab nähmlich im Step Event ne Reihe Sachen, die vielleicht die Animation neutralisieren können.

    Step:

    GML-Quellcode

    1. //perform friction on wspeed, it decreases the wspeed to 0
    2. if(wspeed > 0 && wspeed < 0.5) wspeed = 0
    3. else if(wspeed > 0) wspeed -= 0.5
    4. if(wspeed < 0 && wspeed > -0.5) wspeed = 0
    5. else if(wspeed < 0) wspeed += 0.5
    6. //this is the magic code, first it checks if the player can move to the right,
    7. //if not, then it will start looping to see if it can go to right with a pixel up..
    8. for(i=0;i<abs(wspeed);i+=0.5) {
    9. st = place_free(x,y+2)
    10. st2 = sign(wspeed)/2
    11. if(place_free(x+st2,y)) x+=st2
    12. else if(!st && place_free(x+st2,y-1)) { x+=st2; y-=1; }
    13. else if(!st && place_free(x+st2,y-2)) { x+=st2; y-=2; }
    14. else if(!st && place_free(x+st2,y-3)) { x+=st2; y-=3; }
    15. else break;
    16. }
    17. //Here its checking to see if there is a horizontal block below the player
    18. var ins;
    19. ins = instance_place(x,y+2,s_hblock)
    20. if(ins != noone) if(place_free(x+ins.hsp,y)) x += ins.hsp
    21. //Checks to see if the place below us is free
    22. if(place_free(x,y+1)) {
    23. // if the player is going up, and is not pressing up, then we want him to go down fast
    24. if(vspeed < 0 && !keyboard_check(vk_up)) gravity = 1.25
    25. // if the player is going down, or if the player is going up and is pressing up, we want him to go slow down slowly
    26. else gravity=0.25
    27. }
    28. // Aah no place free below the player! lets make him stop
    29. else gravity=0
    30. // We don't want the vspeed to go over 6
    31. if(vspeed > 6) vspeed=6
    Alles anzeigen



    End Step:


    GML-Quellcode

    1. //this sets the image speed to the right speed
    2. if(wspeed < 0) image_speed = -wspeed/10
    3. else image_speed = wspeed/10
    4. //if the player is standing still, we want to show the idle sprite
    5. if(wspeed == 0) {
    6. if(sprite_index == spr_run_left) sprite_index = spr_idle_left
    7. else if(sprite_index == spr_run_right) sprite_index = spr_idle_right
    8. }
    9. //if there is place free below us, we want to show a jump sprite!
    10. if(place_free(x,y+2)) {
    11. image_speed = 0
    12. if(wspeed == 0) {
    13. if(sprite_index == spr_idle_left) sprite_index = spr_jump_left
    14. if(sprite_index == spr_idle_right) sprite_index = spr_jump_right
    15. }
    16. if(wspeed > 0 || keyboard_check(vk_right)) sprite_index = spr_jump_right
    17. if(wspeed < 0 || keyboard_check(vk_left)) sprite_index = spr_jump_left
    18. if(vspeed > 0) image_index = 0
    19. else image_index = 1
    20. }
    21. //Now he's on the ground, and he's moving, so lets show the run sprite
    22. else {
    23. if(wspeed > 0 || keyboard_check(vk_right)) sprite_index = spr_run_right
    24. if(wspeed < 0 || keyboard_check(vk_left)) sprite_index = spr_run_left
    Alles anzeigen


    EDIT by WIN: gml-tags eingefügt