Problem mit if und else Verkettungen

    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. }


    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°)
    • Bluetooth Multiplayer
    • Wasser App: play.google.com/store/apps/details?id=com.gaming_apps.water_physics_simulation
    • :shifty: :motz:

    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. }


    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;
    Jo da hast du recht.

    Da könnte man ja sogar noch:

    GML-Quellcode

    1. image_index = point_direction(500,500,mouse_x,mouse_y) div (360/8);


    @Brummfitze formatiere deinen Code bitte. Es ist sonst schwer das zu durchdenken

    zB

    GML-Quellcode

    1. else
    2. {
    3. }


    ^^
    • Bluetooth Multiplayer
    • Wasser App: play.google.com/store/apps/details?id=com.gaming_apps.water_physics_simulation
    • :shifty: :motz: