Geschütz auf einem NPC | Geschoss in die Direction | GMS PRO RTS

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

  • Geschütz auf einem NPC | Geschoss in die Direction | GMS PRO RTS

    Guten Tag

    Kurz Info zu mir ich habe die Steam Version GAME MAKER STUDIO PRO Version.

    Nun zu meinen Fragen.

    Es ist so das ich Einheiten in mein Spiel eingebaut habe. Diese lassen sich RTS typisch sich Kommandieren etc. Nun ist es aber so das ich es gerne so machen würde das ich nur die Fahrzeuge steuerung möchte also einen move punkt setzten möchte. Das geht ABER ich würde gerne einen Geschütz Turm auf diesen NPC setzten damit dieser im 360 Grad winkel hernkommende Gegner beschiessen kann. Nun ist es so das es ansich mit "object_exists" funkoniert. Aller Dings nur bei einer Einheit sind mehre davon auf der Map oder neue erstellt so wird kein Turm erstellt. Wie kriege ich es nun hin das jeder dieser Einheiten einen Turm hat der fest gebunden ist?

    Und meine 2 Frage kombiniert sich mit der ersten. Die abfrage ob ein Gegner in der nähe ist etc. Klappt und er schisst auch auf Ihn NP. Aber ich würde er gerne so machen das wenn er schiesst Die Kugel in die sicht direction des geschützes schaut.
    Klar standard wäre.

    Quellcode

    1. image_angle = point_direction(x,y,obj_sal.x,obj_sal.y);
    2. move_towards_point(obj_sal.x,obj_sal.y,15)


    Aber das bei jedem Object das feindlich ist zu machen wäre ja mühsam und ich hab angst das die Kugel nicht mehr weiss wohin sie soll wenn mehrere dieser Gegner im Sichtfeld sind.


    Grüsse
    MAKE MY WORLD WITH GAME MAKER :gmlove:
  • Also erstens: du brauchst den Geschützturm eigtl nur drawen zu lassen von jedem deiner einheiten. Und zweitens: wenn die einheit schießt merkt sie sich die zielkoordinate und das Geschoss braucht nur immer in richtung der Zielkoordinate sehend erstellt werden.

    GML-Quellcode

    1. turmrotation = point_direction(x,y,obj_sal.x,obj_sal.y);
    2. draw_sprite_ext(spr_turm,turmsubimg,x,y,1,1,turmrotation,c_white,1);
    3. if schuss == 1
    4. {
    5. schuss == 0;
    6. geschoss = instance_create(x,y,obj_geschoss);
    7. geschoss.direction = turmrotation;
    8. geschoss.image_angle = geschoss.direction;
    9. }


    So bezieht sich eine Einheit nur auf seinen Turm und ein Schuss auch nur auf den Turm von dem er abgefeuert wurde.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Grüss dich

    Danke sehr. Auf diese idee bin ich gar nicht gekommen. Schluss endlich sehr übersichtlich und wirkungsvoll.
    Und wenn ich dich richtig verstanden habe ist es eifnach so das sollten z.b mehrere "obj_sal" vorkommen er zuerst den ersten nimmt den den nächsten.

    Mal so ein gedanken gang.

    Ich könnte dein Script für jeden Gegner nehmen den ich im Spiel habe. Würde es sinnvoller sein eine nähe abfrage zu starten oder kann ich das Script mehrmals unter drunter schreiben und die "KI" würde dann passend reagieren?

    Freundliche Grüsse


    EDIT: ALso meine Einheit schisst selbstständig auf gegner. No Problem

    Komischer weise zeichnet er aber das Geschütz SPR nicht.

    Das liegt nicht evtl. am Depth -100 ?

    Oder muss ich das Spr speperat DRAWN ? Weil momentan ist das script im Step event.
    MAKE MY WORLD WITH GAME MAKER :gmlove:

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

  • ich würde alles zu drawende ins draw event geben und den rest ins step event, alles im draw event kann natürlich auf alles im stepevent zugreifen und umgekehrt. Also du kannst im stepevent die direction berechnen lassen und dann im drawevent in direction drawen lassen. das kommt immer drauf an wann man was berechnet haben muss:


    The order the events that are preformed every step is:
    -Draw
    -Begin Step
    (keyboard input and alarm events)
    -Step
    (default movements)
    (collision events)
    -End Step


    das man den Turm nicht sieht, liegt wasl daran dass der Turm nicht nach dem "Körper" gedrawed wird. Damit die Reihenfolge stimmt musst du die zu drawenden Elemente wie Papierstapel übereinander legen von unten nach oben. btw vergiss nicht auf draw_self() im draw event wenn du das "Hauptsprite" das deinem object zugeordnet ist sehen willst :)

    Momentan ist sucht er die erste Instanz die er in der Abfrage trifft, aber das muss nciht die näheste sein, die näheste wäre:

    GML-Quellcode

    1. ziel = instance_nearest(x,y,obj_sal);
    2. direction = point_direction(x,y,ziel.x,ziell.y);

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Okay danke werde ich ausprobieren =)

    EDIT:

    Konnte das jetzt locker lösen im "DRAWEND"

    Quellcode

    1. draw_self()
    2. draw_sprite(spr_turm,image_index,x,y)



    DANKE SCHÖN
    MAKE MY WORLD WITH GAME MAKER :gmlove:

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