Problem mit if und else Verkettungen

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

  • Problem mit if und else Verkettungen

    Hallo zusammen!

    Hab ein(Anfänger) Problem mit meinem Code, vielleicht kann mir ja wer helfen, danke schonmal im Vorraus.

    Hab in GML eine einfache Maussteuerung geschrieben, das dunktioniert schonmal gut, aber ich kireg´s nicht hin das sich das Sprite des Spielers in 8 Richtungen mitdreht, also es wechselt einfach nicht. :headtouch:
    (Ich benutze Gamemaker Studio 2)
    Hier mein Code:


    var dist_mouse;
    dist_mouse = point_distance(x,y,mouse_x,mouse_y)

    if (mouse_check_button(mb_left))
    {
    direction = point_direction(x,y,mouse_x,mouse_y)
    speed ++;

    if (speed >= 10)
    {
    speed = 10;
    }
    }

    else
    {
    speed = 0;
    }


    if (dist_mouse <= 10)
    {
    speed = 0;
    }

    else
    {

    }



    // Sprite_8Dir

    if (x<xprevious && y<yprevious)
    {
    if (sprite_index != sprPlayer_le_do)
    {
    sprite_index = sprPlayer_le_do;
    }
    image_speed = 0.15;
    }

    else if (x>xprevious && y>yprevious)
    {
    if (sprite_index != sprPlayer_ri_up)
    {
    sprite_index = sprPlayer_ri_up;
    }
    image_speed = 0.15;
    }

    else if (x>xprevious && y<yprevious)
    {
    if (sprite_index != sprPlayer_ri_do)
    {
    sprite_index = sprPlayer_ri_do;
    }
    image_speed = 0.15;
    }

    else if (x<xprevious && y>yprevious)
    {
    if (sprite_index != sprPlayer_le_up)
    {
    sprite_index = sprPlayer_le_up;
    }
    image_speed = 0.15;
    }

    else if (x<xprevious)
    {
    if (sprite_index != sprPlayer_le)
    {
    sprite_index = sprPlayer_le;
    }
    image_speed = 0.15;
    }

    else if (x>xprevious)
    {
    if (sprite_index != sprPlayer_ri)
    {
    sprite_index = sprPlayer_ri;
    }
    image_speed = 0.15;

    }

    else if (y<yprevious)
    {
    if (sprite_index != sprPlayer_do)
    {
    sprite_index = sprPlayer_do;
    }
    image_speed = 0.15;
    }

    else if (y>yprevious)
    {
    if (sprite_index != sprPlayer_up)
    {
    sprite_index = sprPlayer_up;
    }
    image_speed = 0.15;
    }


    else
    {
    image_speed = 0;
    sprite_index = 0;
    }
  • GML-Quellcode

    1. var _dir = point_direction(500,500,mouse_x,mouse_y) div (360/8);
    2. switch(_dir) {
    3. case 0: image_index = 0;
    4. case 1: image_index = 1;
    5. case 2: image_index = 2;
    6. case 3: image_index = 3;
    7. case 4: image_index = 4;
    8. case 5: image_index = 5;
    9. case 6: image_index = 6;
    10. case 7: image_index = 7;
    11. default: image_index = 0;
    12. }
    Alles anzeigen


    point_direction(500,500,mouse_x,mouse_y) div (360/8);

    point_direction(500,500,mouse_x,mouse_y) -> errechnet grob gesagt den Winkel zwischen dem Player und deiner Maus
    div -> gibt dir die Zahl vor dem Komma zurück (bei einer Division) Bsp: 8 / 3 wäre 2
    (360/8) -> wären die 8 Richtungen die du haben willst (also jeweils 45°)
  • glim888 schrieb:

    GML-Quellcode

    1. var _dir = point_direction(500,500,mouse_x,mouse_y) div (360/8);
    2. switch(_dir) {
    3. case 0: image_index = 0;
    4. case 1: image_index = 1;
    5. case 2: image_index = 2;
    6. case 3: image_index = 3;
    7. case 4: image_index = 4;
    8. case 5: image_index = 5;
    9. case 6: image_index = 6;
    10. case 7: image_index = 7;
    11. default: image_index = 0;
    12. }
    Alles anzeigen


    point_direction(500,500,mouse_x,mouse_y) div (360/8);

    point_direction(500,500,mouse_x,mouse_y) -> errechnet grob gesagt den Winkel zwischen dem Player und deiner Maus
    div -> gibt dir die Zahl vor dem Komma zurück (bei einer Division) Bsp: 8 / 3 wäre 2
    (360/8) -> wären die 8 Richtungen die du haben willst (also jeweils 45°)

    Warum nicht gleich

    GML-Quellcode

    1. image_index = _dir;