In diesem Tutorial zeige ich wie einfach ihr ein Objekt, wie einen Mond oder eine Drohne, um ein anderes Objekt, wie einen Planeten oder den Spieler kreisen lassen könnt. Im Speziellen zeige ich es euch hier an einem Schiff, auf dem mehrere Geschütztürme montiert sind und die ihr unabhängig vom Schiff steuern könnt.
Die Theorie
Der zugrundeliegende Code den ihr für alle derartigen Anwendunegn braucht:
Um nun den Mond zum kreisen zu bringen müsst ihr nur stetig (step-Event) den Winkel ändern.
Anwendung
Also gehen wir´s an!
Für dieses Beispiel, müsst ihr drei Objekte erstellen; das Schiff und zwei Geschütztürme. Sowie die dazugehörigen Sprites.
Wichtig! Wenn ihr die Sprites erstellt richtet sie nach Rechts aus, dann habt ihr später keine Probleme mit der Variable Direction.
Sprites:
Das Schiff Sprite könnt ihr gestalten wie ihr wollt (es kann auch ruhig mehrere Subimages haben, Blinklichter etc), ich habe meines 32px hoch und 64px breit gemacht.
Der Nullpunkt befindet sich genau in der Mitte
Wie bei dem Schiffskörper, könnt ihr die Geschütztürme ebenso frei gestalten, aber lasst soviel Platz am Canvas, dass das Rohr theoretisch in alle Richtungen geschwenkt werden kann. Dann klickt unter Animation auf Rotation Sequence -> Counter Clockwise! und 360 Frames.
Später wird sich nicht das Objekt drehen sondern nur das Subimage angegeben.
Objects:
obj_schiff:
Spoiler anzeigen
Im Create Event initialisieren wir die globale Variable "richtung". Erstellen das obj_turm2 auf 0,0 und obj_turm1 auf 16,0.
Wenn ihr das Spiel jetzt startet sollten beide Türme auf dem Schiffskörper sitzen, einer davon weiter vorne als der andere. Im Idealfall sieht das schon gut aus
Im keyboard Event <Left> setzen wir "richtung" auf 2 relativ und auf -2 im keyboard Event <Right>
keyboard Event <Up> beschleunigen wir das Schiff.
Solange wir also unter Speed 3 sind beschleunigen wir das Schiff in die gelenkte Richtung.
Abgebremst wird im keyboard Event <Down>.
So, damit wir das auch sehen können müssen wir ein wenig im Step Event herumhantieren:
Alles anzeigen
Wunderbar, das Schiff lässt sich durch den Raum steuern...bloß die Türme bleiben auf der Strecke...
obj_turm1
Spoiler anzeigen
Im Endstep Event benutzen wir Jump to Position um den Turm immer an seine vorgesehene Stelle am Schiff zu setzen.
Da der Turm je nach Geschwindigkeit des Schiffes nur stotternd hinterherkommt benutzen wir Draw Sprite
Dort nehmen wir das Turm1 Sprite mit den 360 Subimages, die selben x und y Koordinaten wie im Endstep Event und schlussendlich setzen wir subimage auf "direction".
Nun wollen wir den Turm zum drehen bringen:
keyboard Event <A>:
keyboard Event <S>
obj_turm2:
Spoiler anzeigen
dupliziert obj_turm1, ändert das Sprite im Draw Event und stellt überall den Radius von 16 auf 0 oder 4 um, je nachdem wie groß eure Türme geworden sind.
Und das war es auch schon
Ihr habt ein Schiff, dass sich frei bewgen kann und die Türme lassen sich ebenso unabhängig steuern.
Ich hoffe es hat euch gefallen und geholfen. Wenn es unklarheiten gibt, Screenshots oder ein Example benötigt wird, stelle ich dies gerne zur Verfügung.
Ebenso mache ich gerne einen zweiten Teil in dem ihr die Türme automatisch oder auf Tastendruck an die Richtung des Schiffs ausrichten , sowie schießen lassen könnt.
Die Theorie
Der zugrundeliegende Code den ihr für alle derartigen Anwendunegn braucht:
Um nun den Mond zum kreisen zu bringen müsst ihr nur stetig (step-Event) den Winkel ändern.
Anwendung
Also gehen wir´s an!
Für dieses Beispiel, müsst ihr drei Objekte erstellen; das Schiff und zwei Geschütztürme. Sowie die dazugehörigen Sprites.
Wichtig! Wenn ihr die Sprites erstellt richtet sie nach Rechts aus, dann habt ihr später keine Probleme mit der Variable Direction.
Sprites:
Das Schiff Sprite könnt ihr gestalten wie ihr wollt (es kann auch ruhig mehrere Subimages haben, Blinklichter etc), ich habe meines 32px hoch und 64px breit gemacht.
Der Nullpunkt befindet sich genau in der Mitte
Wie bei dem Schiffskörper, könnt ihr die Geschütztürme ebenso frei gestalten, aber lasst soviel Platz am Canvas, dass das Rohr theoretisch in alle Richtungen geschwenkt werden kann. Dann klickt unter Animation auf Rotation Sequence -> Counter Clockwise! und 360 Frames.
Später wird sich nicht das Objekt drehen sondern nur das Subimage angegeben.
Objects:
obj_schiff:
Im Create Event initialisieren wir die globale Variable "richtung". Erstellen das obj_turm2 auf 0,0 und obj_turm1 auf 16,0.
Wenn ihr das Spiel jetzt startet sollten beide Türme auf dem Schiffskörper sitzen, einer davon weiter vorne als der andere. Im Idealfall sieht das schon gut aus
Im keyboard Event <Left> setzen wir "richtung" auf 2 relativ und auf -2 im keyboard Event <Right>
keyboard Event <Up> beschleunigen wir das Schiff.
Solange wir also unter Speed 3 sind beschleunigen wir das Schiff in die gelenkte Richtung.
Abgebremst wird im keyboard Event <Down>.
So, damit wir das auch sehen können müssen wir ein wenig im Step Event herumhantieren:
GML-Quellcode
Wunderbar, das Schiff lässt sich durch den Raum steuern...bloß die Türme bleiben auf der Strecke...
obj_turm1
Im Endstep Event benutzen wir Jump to Position um den Turm immer an seine vorgesehene Stelle am Schiff zu setzen.
Da der Turm je nach Geschwindigkeit des Schiffes nur stotternd hinterherkommt benutzen wir Draw Sprite
Dort nehmen wir das Turm1 Sprite mit den 360 Subimages, die selben x und y Koordinaten wie im Endstep Event und schlussendlich setzen wir subimage auf "direction".
Nun wollen wir den Turm zum drehen bringen:
keyboard Event <A>:
keyboard Event <S>
obj_turm2:
dupliziert obj_turm1, ändert das Sprite im Draw Event und stellt überall den Radius von 16 auf 0 oder 4 um, je nachdem wie groß eure Türme geworden sind.
Und das war es auch schon
Ihr habt ein Schiff, dass sich frei bewgen kann und die Türme lassen sich ebenso unabhängig steuern.
Ich hoffe es hat euch gefallen und geholfen. Wenn es unklarheiten gibt, Screenshots oder ein Example benötigt wird, stelle ich dies gerne zur Verfügung.
Ebenso mache ich gerne einen zweiten Teil in dem ihr die Türme automatisch oder auf Tastendruck an die Richtung des Schiffs ausrichten , sowie schießen lassen könnt.