Gegnerische KI

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

  • Gegnerische KI

    Hallo community,

    Ich bin gerade dabei ein Topdown Shooter zu programmieren und möchte eine KI Programmieren, damit der Gegner auf einen zuläuft und auf einen schießt, doch ERST, wenn der Gegner den Spieler "sieht". Ich hoffe mir kann dabei jemand helfen.

    Gruß Reflekto99
  • Du kannst für jeden Gegner ein Blickfeldobjekt erstellen, dass die Berechnung ausführt (dabei sollte der Sprite des Blickfeldes natürlich so sein, wie der Gegner gucken können soll).
    Hier ein Auszug aus einem meiner "Spiele", in dem das gleiche passiert:

    Quellcode

    1. [code=gml]
    2. //Create-Event obj_gegner
    3. gesehen = false; //wenn true, dann hat der Gegner den Spieler gesehen
    4. blickfeld = instance_create(x,y,obj_blickfeld); //Blickfeld erstellen
    5. blickfeld.ziel = id; //ziel ist die ID von dem Gegner, wird später wichtig
    6. blickfeld.visible = false; //Blickfeld unsichtbar machen
    7. //Step-Event obj_gegner
    8. blickfeld.x = x; //X-Position des Blickfeldes aktualisieren
    9. blickfeld.y = y; //Y-Position des Blickfeldes aktualisieren
    10. blickfeld.image_angle = image_angle; //Blickfeld muss in richtige Richtung gucken
    11. if gesehen == true {HIERGEHENUNDSCHIESSEN;}
    12. //Step-Event obj_blickfeld
    13. if place_meeting(x,y,obj_spieler)&&!collision_line(x,y,obj_spieler.x,obj_spieler.y,obj_wand,true,true){
    14. ziel.gesehen = true; //Spieler gesehen
    15. } else {ziel.gesehen = false;} //Spieler nicht mehr in Sicht
    Alles anzeigen


    Es ist also ein Feedbacksystem zwischen dem Gegner und dem Blickfeld, wobei das Blickfeld prüft, ob der Spieler gesehen wird und der Gegner darauf reagiert.
    Auf dem System kann, sollte und muss man natürlich noch aufbauen.
  • Verstehst du nun Zeile 13 oder 15 nicht?
    In das Zeile 13 - das von dir zitierte - musst du deinen Code einfügen, was passieren soll, wenn der Gegner dich gesehen hat.
    gesehen = true bedeutet ja, dass du im Blickfeld gewesen bist.
    Ab Zeile 15 wird kontrolliert, ob der Spieler im Bereich von deinem Blickfeld ist(also damit kollidiert).
    Zusätzlich wird geprüft ob keine Wand dazwischen ist, weil der Spieler dann ja nicht gesehen wird.
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.