Automatische Schieß gegner

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

  • Automatische Schieß gegner

    Hallo, ich wollte mal fragen wie man einen gegner erschaffen kann der nach dem spieler schiessen soll...
    ein gegener der stehen bleibt, und nicht jetzt 20 kugeln in 1 sekunde schiessen soll... besser wärs alle 2 sekunden ein schuss..
    im internet finde ich nur sowas kompliziertes mit codes ?( :action_code: ...kann mir jemand helfen? (oder den richtigen code dafür geben?)

    danke schonmal im vorraus :)
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Tipp: :action_alarm: <- Alarme benutzen.
    Wenn du den Alarm im Create-Event deines Gegners auf "room_speed*2" setzt (was genau 2 Sekunden entspricht) und dann ins Alarm-Event die Aktionen fürs Schießen packst, wird auch nur alle 2 Sekunden geschossen.

    Zum Schießen selbst: Hier mal ein kleines Beispiel für ein Kugel-Pattern (das funktioniert sogar ohne Alarm)

    :event_create: Create Event:
    :action_code: Code Execution:

    GML-Quellcode

    1. timer=0; //Feuerpause
    2. dir=0; //Schussrichtung, erstmal 0(rechts)


    :event_step: Step Event:
    :action_code: Code Execution:

    GML-Quellcode

    1. var i; // i=index für Kugel-Instanz
    2. timer+=1;
    3. if timer mod 4==0{ //Falls sich bei timer geteilt durch 4 kein Rest ergibt
    4. // d.h. wenn timer gleich 4 mal n ist, wobei n eine natürliche Zahl ohne Null ist
    5. // oder auch: wenn 4 Steps verstrichen sind
    6. repeat(2){ // Folgecode 2 Mal ausführen
    7. repeat(8){ // Und den hier 8 Mal
    8. i=instance_create(x,y,kugel); //die ID des erstellten Objekts wird in i gespeichert
    9. i.direction=dir; //Eigentlich selbsterklärend
    10. i.speed=10;
    11. dir+=360/8; // weil dieser Code ja 8 Mal ausgeführt wird, werden 8 Kugeln kreisförmig abgeschossen
    12. }
    13. dir+=choose(4,-4); // Die zweite Kugelwelle erscheint entweder 4° weiter rechts oder links der ersten.
    14. }
    15. dir+=12; // Die nächsten 2 Wellen kommen 12° weiter "rechts", also gegen den Uhrzeigersinn.
    16. }
    17. // Und Ende.
    Alles anzeigen


    Das ist für dein Vorhaben vielleicht nicht ganz geeignet, denn es wird den ganzen Bildschirm mit Kugeln eindecken - aber es könnte dir helfen, die Grundlagen dahinter zu verstehen und dir ein eigenes System draus zu basteln. Und darauf kommt's mir ja an. ;)
  • sorry aber wennich da deinen text nehme, zeigt er mir nur den error bei line 3 position 1 an...
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Das in das Objekt das schießt:
    Ins Create-Event:
    -Piece of Code

    GML-Quellcode

    1. alarm[0]=60

    Ins Alarm 0-Event:
    -Piece of Code

    GML-Quellcode

    1. instance_create(x,y,obj_schuss)
    2. alarm[0]=60

    "obj_schuss" ersezt du druch den Namen der Kugel!

    Das in den Schuss:
    Create-Event:
    -Move toward Point
    X= obj_player.x
    Y= obj_player.y
    Speed= speed
    Stop at= solid only


    "obj_player" ersezt du durch den Namen deines Objekts das abgeschossen werden soll, und "speed" ersezt du durch die Geschwindigkeit des Objekts.

    MFG Rohkar

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

  • Klar kannst du das - ist eigentlich sogar besser, als hier im Thread.
    Aber kurz zu deiner Frage:
    Du kannst die Codes, so wie sie sind, benutzen. Kopier sie einfach in die entsprechenden Events eines Controller-Objekts, erstell dann ein Objekt namens "kugel" und verpass ihm ein beliebiges Sprite. Leg außerdem fest, dass seine Instanz zerstört wird, wenn sie den Raum verlässt (da gibt's ein eigenes Event für). Pack dann den Controller irgendwo in deinen Room und starte das Programm. Wenn du auch aus den Kommentaren im Code nicht schlau wirst, dann sollte spätestens das laufende Programm ein paar Fragen klären. ;)
    Alles weitere dann per PN.
  • nur das von rohkar hat geklappt. bei deinem hat er leider nur andauernd errors angzeigt... aber trotzdem danke.
    Aktuelle Projekte:

    • PacTobs 1(comming soon...) :gmlove:
    • PacTobs 2
    • ??? Quiz
    • Panzer-Spiel
    • Mario IN:The War of the Mushroom Kingdom!!
    • Ein Koopa-Spiel
    • Platform Spiel.

  • Hallo, ich wollte mal fragen wie man einen gegner erschaffen kann der nach dem spieler schiessen soll...

    ein gegener der stehen bleibt, und nicht jetzt 20 kugeln in 1 sekunde schiessen soll... besser wärs alle 2 sekunden ein schuss..

    im internet finde ich nur sowas kompliziertes mit codes ?( :action_code: ...kann mir jemand helfen? (oder den richtigen code dafür geben?)



    danke schonmal im vorraus :)


    ----------

    Da dieser Thread öfters mal aufgerufen wird, habe ich auch noch eine Lösung, da diese bei mir nicht so ganz funktionieren xD


    :event_create: - > :action_variable: Set variable bulletammo to 1 (nicht relativ)
    :event_timer: (Alarm 0) -> :action_variable: Set variable bulletammo to 1 (nicht relativ)
    :event_step: - >

    Quellcode

    1. if distance_to_object(o_character)<200 and bulletammo=1 // Wenn du innerhalb einem Radius von 200 Pixel bist und der Gegner Munition hat, schießt der Gegner auf dich
    2. {
    3. image_angle = point_direction(x,y,o_character.x,o_character.y); // Wenn sich der Gegner in Richting Spieler drehen soll
    4. instance_create(x, y, o_Bullet); // Kugel erstellen
    5. o_Bullet.direction = point_direction(x, y, o_sammler.x, o_sammler.y); // Fliegt in Richtung Spieler
    6. o_Bullet.speed = 10; // Wie schnell die Kugel fliegt
    7. bulletammo = 0 // Variable ammo wird auf 0 gesetze
    8. alarm[0]=15 // Wie oft er schiessen soll (Raumgeschwindigkeit = 30 , dann schießt er 2 mal pro Sekunde)
    9. }
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.
  • Du solltest die erstellte Kugel direkt ansprechen, nicht so allgemein über o_bullet - kann nämlich sein, dass du damit ne ganz andere Kugel ansprichst als die abgeschossene.

    GML-Quellcode

    1. var i;
    2. i=instance_create(x,y,bla);
    3. i.attribut=wert;

    funktioniert da bedeutend besser.

    Tipp: Der Debug-Modus im GM, erreichbar über die F6-Taste oder den roten Play-Button, kann dir gründlichere Infos darüber geben, was denn nu passiert und was nicht - sich mit dem vertraut zu machen kann also auch nicht schaden ^^