Kollisionsabfrage mit darauffolgender Spriteänderung

  • GM 7

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

  • Kollisionsabfrage mit darauffolgender Spriteänderung

    Hi Leute,

    ich habe mal eine Frage :

    Ich möchte eine Kollisonsabfrage mit dem Spieler x und dem Objekt y erstellen. Dies soll wie folgt funktionieren:

    Schritt 1:

    Es ist eine Art Tarnfunktion des Spielers, welche man über die Shift Taste aktiviert. Dies soll aber NUR in Kraft treten, wenn sich der Spieler x auf dem Objekt y befindet (Kollision). Dann soll sich, durch das drücken der Shift Taste(und auch nur in dem Zeitraum, indem man die Shift-Taste betätigt) der normale Playersprite 1 umwandeln in einen Playersprite 2. Nachdem man die Shift-Taste loslässt, soll dann wieder Playersprite 1 erscheinen...
    Befindet sich der Spieler x also nicht auf dem Objekt y, soll demnach auch nichts passieren.

    Schritt 2:

    Der zweite Schritt wäre dann eine Abfrage mit einem Gegner z. Beispiel:

    Spieler x fliegt gemütlich durchs Level... Gegner z kommt und fliegt immer automatisch auf den Spieler x zu in dem Tempo t... Gegner z verfolgt den Spieler x so lang, bis er sich auf Objekt y begibt und den Tarnmodus (Änderung in Playersprite 2) anwirft... Ist dies getan dreht der Gegner z ab und fliegt links aus dem Bild....


    Hat da eventuell wer ne schlaue GML Lösung parat? Schritt 1 wäre definitiv erstmal am wichtigsten ;)

    Danke schonmal im Voraus ;)
    Greetz
  • Naja, dann antworte ich mal:

    1.

    GML-Quellcode

    1. //Create
    2. tarn = 0;

    GML-Quellcode

    1. //Kollisions Event von Spieler x mit Object y
    2. if keyboard_check(vk_shift)
    3. {
    4. tarn = 1;
    5. }

    GML-Quellcode

    1. //Step
    2. if keyboard_check_released(vk_shift)
    3. {
    4. tarn = 0;
    5. }
    6. if tarn == 1
    7. {sprite_index = sprite2;}
    8. else
    9. {sprite_index = sprite1;}



    2.
    Das hinterherfliegen geschiet ja bestimmt erst bei bestimmten Radius oder??

    GML-Quellcode

    1. //Create Gegner z
    2. follow = 0;

    GML-Quellcode

    1. //Step
    2. if distance_to_object(obj_player) < 200 && obj_player.tarn == 1
    3. {follow = 1;}
    4. else
    5. {follow = 0;}

    Ich hoffe mal, dass das das richtige ist und auch funktioniert.
    Die Funktionen müsstest du ja als GML Anfänger kennen, falls nicht, frag einfach :D

    PS: Willkommen im Forum


    Gruß Gamer.
    Gruß Gamer
  • Hehe dankeschön ;)

    Jap, hat soweit mit dem ersten Teil prima geklappt. Gibt nur ein kleines Problem :

    Also meine Spielfigur besteht aus 4 Sprites...

    1.) Normal Frontansicht
    2.) Beim Drücken der Taste A wechselt die Sprite nach links zum laufen/fliegen
    3.) Beim Drücken der Taste D wechselt die Sprite nach rechts zum laufen/fliegen
    4.) Und beim drücken der Taste SHIFT auf dem speziellen Objekt y in den Tarnmodus

    Habe nun alles so umgesetzt, doch nun seh ich auf einmal nur noch die Sprite nach rechts auf meiner Spielfigur... das nach links und die Frontansicht funktionieren nicht mehr.

    Die Tarnungsprite lässt sich als einzige aktiviern und nach loslassen von SHIFT wird wieder nur die Sprite nach rechts angezeigt...

    Des Weiteren gibts da ein kleinen Bug/Cheat : Wenn ich auf Objekt y gehe und den Tarnmodus anwerfe durch drücken der Taste SHIFT und mit gedrückter Taste SHIFT mich von der Platform wegbewege, bleibt die Tarnung erhalten, bis ich die Taste SHIFT loslasse... Es soll allerdings so sein das die Tarnung nur auf Objekt y funktioniert.

    Mal schaun ob ich den Fehler finde.. Anregungen nehme ich natürlich gerne entgegen^^

    Den zweiten Teil werd ich dann auch mal ausprobiern ;)

    EDIT:

    Hm ok...

    oben genannte Probleme kann ich iwie auch nicht nach vielem rumprobieren ausmerzen...

    Ich pack mal die Datei rein, eventuell findet ja wer den/die Fehler in meinem Prototyp^^

    Danke schonmal ;)
    Dateien
    • Prototype.rar

      (16,56 kB, 134 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Radon* ()

  • Wegen den Sprites, musst du halt wechseln, wenn der nach links rechts fährt.

    ZUm anderen Problem:
    Mach noch ins Kollisionevent:

    GML-Quellcode

    1. //Kollisions Event von Spieler x mit Object y
    2. if keyboard_check(vk_shift)
    3. {
    4. tarn = 1;
    5. }
    6. else
    7. {
    8. tarn = 0;
    9. }
    Gruß Gamer
  • Moin,

    also das Problem mit :
    Des Weiteren gibts da ein kleinen Bug/Cheat : Wenn ich auf Objekt y gehe und den Tarnmodus anwerfe durch drücken der Taste SHIFT und mit gedrückter Taste SHIFT mich von der Platform wegbewege, bleibt die Tarnung erhalten, bis ich die Taste SHIFT loslasse... Es soll allerdings so sein das die Tarnung nur auf Objekt y funktioniert.
    habe ich einfach mit dem betätigen der Taste W in zusammenhang gebracht:

    GML-Quellcode

    1. if keyboard_check(ord('W'))
    2. {tarn = 0;}


    Allerdings besteht das Problem mit den Sprites :
    Also meine Spielfigur besteht aus 4 Sprites...

    1.) Normal Frontansicht
    2.) Beim Drücken der Taste A wechselt die Sprite nach links zum laufen/fliegen
    3.) Beim Drücken der Taste D wechselt die Sprite nach rechts zum laufen/fliegen
    4.) Und beim drücken der Taste SHIFT auf dem speziellen Objekt y in den Tarnmodus

    Habe nun alles so umgesetzt, doch nun seh ich auf einmal nur noch die Sprite nach rechts auf meiner Spielfigur... das nach links und die Frontansicht funktionieren nicht mehr.
    immernoch und ich seh nicht warum das so ist ?(

    Ich häng mal ne aktuelle Datei an...

    Zur Erklärung des Step Events des Spielers:

    GML-Quellcode

    1. if tarn == 1
    2. {sprite_index = player_hide;}
    3. else
    4. {sprite_index = player_right;}


    Dort bei der Else Schleife muss ich die "player_right" Sprite angeben, anstatt der gewollten "player_normal" Sprite, da mit der "player_normal" Sprite der Spieler überhaupt nicht mehr angezeigt wird, was jedoch vor diesem Hide-Event der Fall war..
    Dateien
    • Prototype.rar

      (11,89 kB, 139 mal heruntergeladen, zuletzt: )
  • Keine Ahnung an was das liegt, aber ich hab gessehn, dass du ein Sprite hast, dass player_normal heißt und ein Objekt.
    Das kann zu Fehlern kommen, vllt liegts ja auch daran, ich weiß es nicht genau.

    Mach für objekte:
    obj_
    für sprites:
    spr_
    für rooms:
    rm_
    für scripts:
    scr_

    usw.

    Dann können auch keine Fehler entstehen.
    Gruß Gamer