KI für Jump n Run ähnliches Spiel

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

  • KI für Jump n Run ähnliches Spiel

    Hallo
    Mal wieder ein Problem^^
    Ich will KI für mein Game machen. Der Gegner(Computer) soll hochspringen wenn ich auf ihn schieße.
    So wie ich das machen wollte funktioniert das irgendwie nicht so wirklich.
    Und er soll auf mich schießen können. D h Kugeln ausweichen und selber schießen. Desweiteren soll er sich natürlich auch im Raum bewegen können.
    Ich hab einen Raum mit Plattformen. Der Computer-Gegner soll auch auf die springen könen. Also das Spiel ist so auf Jump and Run Basis aufgebaut, das heißt die Figuren werden so wie in einem J n R game gesteuert usw.

    Danke
  • 1. Also schonma zum Bewegen. Das kannst du mit Timelines machen.
    Die sind auch in der Game Maker Hilfe von Windapple Zum Beispiel 20 Schritte nach links........

    2. Dann zum Schießen: Du gehst da ma ins "Controll" Menü (im GM) und benutzt die Eigenschaft mit dem grünen Würfel. Dort gibst du eine Zahl an (am besten: 180) d.h. 1 zu 180 (vielleicht: 5 Schüsse in 15 Sekunden) du kannst natürlich auch deine Werte nehmen.

    3. Dann zum Springen, wenn du schießt: Das müsstest du in einem GML Code zusammenfassen. Hier mal der Code für die Entfernung messen:

    GML-Quellcode

    1. //Checkt die entfernung vom Bullet zum Gegner
    2. if (point_distance(x,y,obj_bullet.x,obj_bullet.y) > 100);
    WICHTIG: DIESER CODE MUSS IN DAS GEGNER OBJEKT!
    Am Ende des Codes fügst du dann noch den GML Spring Code ein.

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von Merko ()

  • also Code scheint wohl zu stimmen. Auf jeden Fall zeigt er keine Fehlermeldungen mehr an.
    Dann soll er aber springen das hab ich jetzt mit vspeed=-12 gemacht.
    Ich weiß nicht ob das so geht (tuts jedenfalls bei mir nicht^^).
    Ich hab das vorher ohne GML aber auch so gehabt.
  • Das mit dem Vertical Speed ist falsch, weil das heißt nur, dass er sich nach hinten bewegt (richtig wäre JUMP TO A GIVEN POSITION. Da fehlen noch die Kolissionsabfrage und der Else Teil. Aber nur wenn du in deinem Game Deckenhindernisse hast. Ich werde in kürze einen richtigen GML Code draus machen. ;)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Merko ()

  • Jo, kann sein, dass das falsch ist.
    Ich hab bis jetzt auch fast ausschließlich ohne GML gearbeitet.
    Aber mit den Buttons gings bis jetzt auch so. Aber rgendwie wollen die Timelines auch nicht so recht bei mir.
    Das sind doch keine Sekunden oder so sondern Schritte(?).
    Also ich hab das Spiel ja schon für 2 Spieler konzipiert aber ich könnte doch jetzt einfach das von UP(keyboard) auf das BEGIN STEP EVENT uebertragen oder nicht?
    Nur fehlt mir dazu der passende Code.
    Womit ersetzt man denn JUMP TO A POSITION?

    Achja
    wo ist denn eigentlich obj_bullet?
    Muss das da nicht rein?

    EDIT: So hab das jetzt hinbekommen, dass er hochspringt und auf mich feuert.
    Nur ich hab jetzt
    distance_to_object(bullet)<100
    benutzt
    Das heißt aber, dass er auch hochspringt, wenn die Kugel über ihm ist und er tötet sich selber.^^

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

  • Vielen Dank für deine Hilfe.
    Aber irgendwie wollen die Timelines nicht.
    Der Anfang ghet aber dann läuft das Objekt nur in die gleiche Richtung und rennt die ganze Zeit gegen die Wand.

    Hab jetzt nochmal so ein Testlevel reingepackt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von eXiT ()

  • Du muss es unbedingt auch nicht mit TImelines Machen. (Is aber viel leichter. Sieh dir ma die GAME MAKER HELP VON WINDAPPLE AN.. Geh auf die Suche und gib 20 Schritte ein. Dann gehst du auf das Ergebnis "Zeitleisten". Hier ma ein Zitat davon:

    "In einer Zeitleiste gibst du an, welche Aktion zu einem bestimmten Zeitpunkt geschehen soll. Du kannst alle Aktionen, die für die verschiedenen Ereignisse vorhanden sind, benutzen. Wenn eine Zeitleiste erstellt ist, kannst du sie mit einer Instanz eines Objekte verbinden. Diese Instanz führt die Aktion zum angegebenen Zeitpunkt aus. Lass' mich ein Beispiel zeigen. Vorausgesetzt du willst eine Wache erstellen. Diese Wache sollte 20 Zeitschritte lang nach links, 10 nach oben, 20 nach rechts, 10 nach unten gehen und dann stehen bleiben. Dafür musst du eine Zeitleiste erstellen, beim Start setzt du die Bewegung nach links. Beim Zeitpunkt 20 setzt du die Bewegung nach oben, beim Zeitpunkt 30 die Bewegung nach rechts, beim Zeitpunkt 50 eine Bewegung nach unten und beim Zeitpunkt 60 hälst du die Bewegung an. Nun kannst du die Zeitleiste mit der Wache verbinden und die Wache wird genau das Geplante machen. Du kannst auch eine Zeitleiste benutzen, um die Steuerung des Spieles globaler zu halten. Erstelle ein unsichtbares Kontrollerobjekt, erstelle eine Zeitleiste, welche an bestimmten Zeitpunkten Feinde erstellt, und weise es dem Kontrollerobjekt zu. Wenn du anfängst, damit zu arbeiten, wirst du feststellen, dass dies ein sehr wirkungsvolles Konzept ist."
  • Ich schein da wohl irgendwas falsch zu machen.
    Wenn ich Step 0 eingebe und Start moving in a direction fängt er auch an zu laufen.
    Bei Step 20 hab ich dann die entgegengesetzte Richtung eingegeben aber mein Objekt ändert seine Richtung nicht mehr.
  • Wie hast du denn das Umgekehrt? SEHR WICHTIG: Wenn der Gegner sich nach links/rechts bewegst musst du "REVERSE THE HORIZONTAL DIRECTION" und bei oben/unten "REVERSE THE VERTICAL DIRECTION" benutzen. Nicht ein zweite Direction angeben, weil er sich nicht in 2 Richtungen gleichzeitig bewegen kann!