Sprite verschindet

  • GM 8

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

  • Sprite verschindet

    Juten Tach zusammen!

    Also ich bin gerade an meinem ersten Spiel mit Game Maker dran und stoße auf einige ziemlich blöde Bugs.
    Ich mache gerade einen Platformer, bei dem der Charakter auch schießen kann. Der Charakter ist auch animiert.

    Sprich bei Links bewegung wird die Sprite von der Linksanimation ersetzt und bei Rechts halt die Rechtsanimation.

    Create der obj_player:

    GML-Quellcode

    1. // Leben des Charakters
    2. global.HP = 3;
    3. global.Live = 3;
    4. invince = false;
    5. //xpos = x;
    6. //ypos = y;
    7. playerRight = true;
    8. playerShoot = false;
    9. image_speed = 0;
    Alles anzeigen


    <Left>

    GML-Quellcode

    1. if (place_free(x-4,y)) {
    2. x-=4
    3. sprite_index = spr_linksRobo;
    4. image_speed = 0.5;
    5. playerRight = false;
    6. }



    <Right>

    GML-Quellcode

    1. if (place_free(x+4,y)) {
    2. x+=4
    3. sprite_index = spr_rechtsRobo;
    4. image_speed = 0.5;
    5. playerRight = true;
    6. }



    So, nun wollte ich die "Schieß-Animation" miteinbauen. Also, dass der Charakter sich anders bewegt wenn er schießt und ein Laserstrahl aus seiner Waffe kommt. Das lustige ist, das funktioniert auch. Aber nur wenn ich nach Rechts schieße. Wenn ich mich nach Links bewege und schieße verschindet die sprite einfach. Und es ist nichts mehr zu sehen.

    <press spacebar>

    GML-Quellcode

    1. playerShoot = true;
    2. alarm[1] = 90
    3. if (playerRight = true && playerShoot = true) {
    4. var obj;
    5. obj=instance_create(obj_player.x+32,obj_player.y-48,obj_laserShoot);
    6. with (obj) motion_set(0,12);
    7. sprite_index = spr_rechtsRoboA;
    8. image_index = 2;
    9. sound_play(snd_laser);
    10. }
    11. if (playerRight = false && playerShoot = true) {
    12. var obj;
    13. obj=instance_create(obj_player.x+32,obj_player.y-48,obj_laserShoot);
    14. with (obj) motion_set(180,12);
    15. sprite_index = spr_linksRoboA;
    16. image_index = 2;
    17. sound_play(snd_laser);
    18. }
    Alles anzeigen



    und <release spacebar>

    GML-Quellcode

    1. if (playerRight = true) {
    2. sprite_index = spr_rechtsRobo;
    3. image_speed = 0;
    4. }
    5. if (playerRight = false) {
    6. sprite_index = spr_linksRobo;
    7. image_speed = 0;
    8. }



    Wenn ich bei der Abfrage für links die Attack Animation weg lasse, funktioniert es o0. Dann schaut er zwar nach rechts aber der schuss geht nach links. Sobald ich die Animation einbaue, verschindet es einfach.

    Hat jemand vielleicht eine Idee woran das liegen könnte?
  • also Ich hab keinen fehler gefunden

    hab die codes kopiert und getestet:
    Bei mir funktioniert es einwandfrei

    in welche richtung sieht das links-sprite im sprite-editor?
    könnte daran liegen, dass du vergessen hast (wenn rechts und links-sprite gleich aussehen nur gespiegelt) es zu spiegeln...
    ist mir mal passiert, da hab ich das rechts-sprite kopiert um das links sprite zu bekommen, nur hab ich vergessen es zu spiegeln >.>,
    ich habs nicht gemerkt, und mir ne halbe stunde den kopf zerbrochen warum es nicht funzt xD
  • Muss andydodongo recht geben, die Codes funktionieren einwandfrei. Aber ich glaube du kannst auch einfach statt

    GML-Quellcode

    1. var obj;
    2. obj=instance_create(obj_player.x+32,obj_player.y-48,obj_laserShoot);
    3. with (obj) motion_set(0,12);

    dass hier verwenden:

    GML-Quellcode

    1. obj=instance_create(obj_player.x+32,obj_player.y-48,obj_laserShoot);
    2. obj.direction=0
    3. obj.speed=12


    LG Afroman
  • Hm, ok Danke!

    Die Sprite ist nicht gespiegelt, die ist "neu gemacht" für Links. Damit der Schattenwurf stimmt. Ich glaube aber der Fehler liegt irgendwie doch an der Sprite undzwar sind es glaub ich pixelfehler bei der kollisionsberechnung mit dem boden. Der Sprite verschiebt sich glaub ich um 1-2 pixel und ragt dann in den boden und verschwindet dann, warum auch immer. Wenn ich in die Luft springe und nach links schieße, klappt es.

    Ich werde mal weiterschauen. Aber danke für das testen der codes.