Zattacka - Schlange schlenkert in entgegengesetzte Richtung vor dem Abbiegen

  • GM 7

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

  • Zattacka - Schlange schlenkert in entgegengesetzte Richtung vor dem Abbiegen

    Ich versuche mich an einem Zattacka!-Ableger (oder auch 'Achtung die Kurve')... Klappt bisher ganz gut, mein einziges Problem: wenn ich nach rechts/links drücke, dann macht die Schlange erst einen minimalen Schlenker in die andere Richtung bevor sie in die richtige geht... hier der Code:

    obj_1:
    Create:

    GML-Quellcode

    1. globalvar a,s;
    2. a = 0;
    3. s = 0;
    4. motion_set(random(360),1);

    Begin step:

    GML-Quellcode

    1. if a = 1 self.direction+=5;
    2. if s = 1 self.direction-=5;
    3. script_execute(scr_begin_step,sprite_1);


    scr_begin_step:

    GML-Quellcode

    1. if self.speed !=0 {
    2. surface_set_target(sf);
    3. draw_sprite_ext(argument0,0,x,y,1,1,self.direction,c_white,1)
    4. surface_reset_target()};
    5. if draw_getpixel(x,y) != c_black sleep(200);


    obj_control:
    Create:

    GML-Quellcode

    1. globalvar sf;
    2. sf = surface_create(400,400);
    3. surface_set_target(sf);
    4. draw_clear_alpha(0,0);
    5. surface_reset_target();

    Begin step:

    GML-Quellcode

    1. if keyboard_check(ord('S')) s = 1 else s = 0;
    2. if keyboard_check(ord('A')) a = 1 else a = 0;
    3. if keyboard_check(ord('M')) m = 1 else m = 0;
    4. if keyboard_check(ord('N')) n = 1 else n = 0;

    Draw:

    GML-Quellcode

    1. draw_surface(sf,1,1);


    Man kann mit A und S die rote Schlange steuern... ich hoffe ihr könnt mir helfen ;)

    Grüße,
    Logan

    Im Anhang die gmk
    Dateien
    • kurve.rar

      (11,94 kB, 166 mal heruntergeladen, zuletzt: )
  • der schwenker liegt am origin von deinem sprite, mach den mittig und es müsste laufen...
    und um gottes willen nimm draw_get_pixel raus! das reduziert die performance auf null!
    ich weis nicht was du damit bewerkstelligen willst, da ich die logik nich ganz verstehe, aber ich verspreche dir, da gibts sicher auch ne schöne lösung dazu!
    "das war meine letzte flamewar PM an dich ."
  • Das mit dem Schlenker habe ich wegbekommen, lag wirklich am Origin, war aber etwas ärgerlich, da ich dadurch ein Script umschreiben musste, weil es darauf ausgelegt war, dass der Sprite immer ein Pixel hinter den Tatsächlichen Koordinaten gedrawd wird. Danke für den Tipp!

    draw_get_pixel brauch ich um zu schauen ob man nicht gegen eine andere Schlange fährt. Ist der Pixel schwarz, ist man auf dem leerem Spielfeld, ansonsten fährt man gegen eine Wand, einen Gegenspieler oder sich selbst. Ich habe den Befehl in 6 Objekten im Step-Event und es läuft auf meinem 3 Jahre altem Laptop ruckelfrei. Wenn aber jemand einen sinnvolleren Vorschlag hat dann immer her damit ;)
  • Ich weis nich, aber auf meinem recht modernen PC läuft das Ding ziemlich langsam, sobald sie kollidieren.. aber ich sehe gerade, das liegt nicht am draw_get_pixel, sondern am sleep(200).. :O
    "das war meine letzte flamewar PM an dich ."