Einen einfachen genger erstellen der auf einen schießt (2D Plattformgame)

  • GM 8

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

  • Einen einfachen genger erstellen der auf einen schießt (2D Plattformgame)

    So wie hier alle sicher wissen bin ich ein NOOB!
    Und deshalb hoffe ich mal auf hilfe.
    Besagtes Game: Agentenspiel. 2d und nun soll auf einer plattform so ein roter Agent hocken.
    Der hat ne waffe kann allerding halt nur nach linjks oder rechts feuern wie ich.
    wie mache ich das das der Gegner dann nach Links oder rechts schießen kann und das der sobald ich ihm nah bin
    auf mich schießt? Ich hatte was gefunden aber das war für ein OBENDRAUFSICHTGAME und das geht bei mir nicht.
    Außerdem soll der gegner erkennen ob ich hinter einer wand bin oder nicht (ist aber optional)
    Bitte helft mir.
  • Einfachste Lösung:

    Create Event
    var can_shoot = 1

    Alarm0 Event
    can_shoot = 1

    Step Event

    wenn can_shoot 1 ist
    dann:
    can_shoot = 0,
    alarm0 = ZEIT, DIE DER AGENT ZWISCHEN DEN SCHÜSSEN BRAUCHT,

    Patronen Objekt createn

    Schuss Objekt Create Event
    move towards Spieler.x, Spieler.y



    Jetzt schießt der Agent aber immer in die Richtung des Spielers, ohne auf Mauern und Entfernung zu beachten.
    Wenn er erst ab einer Enfernung schießen soll,

    GML-Quellcode

    1. if distance_to_object < WasWeißIch
    einbauen.
    Can_shoot is dafür da, dass der Agent nicht ununterbrochen schießt, d.h. jeden step (wären bei normal 30 Schüsse/sek)
    Des mit den Mauern, da bin ich jetzt zu faul dazu.
  • Agenten Objekt:

    Create Event:

    GML-Quellcode

    1. alarm[0] = 30; //Die 30 sind die Frames bis Alarm 0 ausgelöst wird. Wenn du die FPS nicht geändert hast ist das eine Sekunde. Verändere die 30 wenn du willst.


    Alarm 0 Event:

    GML-Quellcode

    1. if (collision_line(x,y,obj_player.x,obj_player.y,obj_wall,0,0)) { //Wenn eine Wand auf dem Weg zum Spieler liegt, nicht schießen. Falls dein Spieler nicht obj_player heißt, ändere das.
    2. exit;
    3. }
    4. ID = instance_create(x,y,obj_bullet) //Hier auch wieder den Namen ändern, falls sie nicht dem hier angegebenen entsprechen. Zuerst kreiert man den Schuss.
    5. if (distance_to_object(obj_player) < 300) { //Hier auch. Die 300 sind die Anzahl von Pixel, die zwischen dem Spieler und dem Gegner liegen dürfen. Also wenn der Spieler weniger weit als 300 Pixel weg ist wird auf ihn geschossen.
    6. with (ID) move_towards_point(obj_player.x,obj_player.y,4) //bei 4 einsetzen mit welcher Geschwindigkeit der Schuss sich zum Spieler bewegen soll (Die Zahl sind die Pixel pro Frame, die sich der Schuss vorwärts beweget).
    7. }
    8. else {
    9. if (obj_player.x<=x+sprite_get_bbox_right(sprite_index)) //Falls der Spieler links von oder genau auf dem Punkt rechts des Gegner Sprites liegt, nach links bewegen
    10. ID.hspeed = -4;
    11. else //Ansonsten nach rechts
    12. ID.hspeed = 4;
    13. }
    14. alarm[0] = 30;
    Alles anzeigen


    Habs nicht getesten, sollte aber funktionieren.
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.