Rotierende Geschütztürme und ihre Kugeln (Gelöst)

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

  • Rotierende Geschütztürme und ihre Kugeln (Gelöst)

    Ich habe in eines meiner kleinen Testspiele, die dann in monströsen und völlig verschachtelten Biestern ausarten, eine Art stationären Geschützturm eingebaut, der sich dank point_direction immer brav in Richtung Fadenkreuz dreht. Und seine Kugeln fliegen auch in Richtung Fadenkreuz, genau wie vorgesehen. Allerdings gibt es da ein kleines Manko: Die Position, an der die Kugeln kreiert werden, bleibt dieselbe, weil ich leider nicht weiß, wie man die mitrotiert. Die Hilfedatei bringt mir da blöderweise auch nichts und mit der Suchfunktion auf gm-d finde ich nur Threads zur Rotation des Turmes selber, die ich schon alleine herausgefunden hab. -.-
    Hier mein Codesegment im Step Event des Turmes:

    GML-Quellcode

    1. image_angle=(point_direction(x,y,mouse_x,mouse_y)-90)
    2. if (global.interval=0)
    3. {
    4. instance_create(x,y,Geschoss)
    5. }


    Ich weiß, dass ich mit den x- und y-Werten bei instance_create irgendwas machen muss, aber ich hab leider keine Ahnung, was. Kann mir jemand helfen?

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

  • Ich könnte dich da jetzt auf ein kleines Example hinweisen klick
    Vorteil: Da ist der komplette Code schon kopierfertig
    Nachteil: Man muss ihn erst raussuchen

    Oder dich anhand zweier Suchwörter auf die Hilfe verweisen ("lengthdir_x" & "lengthdir_y")
    Vorteil: Du musst nicht erst lange suchen
    Nachteil: Du musst die Funktionsweise verstanden haben um sie anwenden zu können.

    In diesem Sinne: Viel Erfolg!
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Okay, ich hab das Exlample mal ausprobiert und auch brav in der Hilfedatei nachgeschlagen, jetzt weiß ich immerhin so in etwa, wie lengthdir funktioniert. Es zeichnet praktisch eine unsichtbare Linie, an deren Spitze die Kugeln kreiert werden. Dummerweise versteh ich immer noch nicht so ganz, wie ich dieses Problem lösen kann:



    Die Kugeln fliegen in die völlig falsche Richtung und ich weiß nicht, wie ich sie so drehen kann, dass sie direkt an der Spitze des Turmes erscheinen.
    Menno...

    EDIT: Jetzt hab ich doch glatt vergessen, mein Codesegment hinzuzufügen oO Asche auf mein Haupt.

    GML-Quellcode

    1. image_angle=(point_direction(x,y,mouse_x,mouse_y)-90) // Turm zeigt auf Mausposition
    2. turretdir=image_angle // Wert der Variable wird ausgeglichen
    3. if (global.interval=0) // Prüfen, ob Feuerpause besteht
    4. {
    5. i=instance_create(x+lengthdir_x(0,turretdir),y+lengthdir_y(0,turretdir),Geschoss) // Kugel erstellen
    6. i.direction=turretdir // Sollte in Richtung des Turmes erstellt werden
    7. }


    Hoffe, ihr könnt damit was anfangen :)

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

  • Ich würde auch generell jegliche drehbaren Geschützturm-Sprites so erstellen, dass der Lauf nach rechts zeigt,
    dann muss man nicht extra noch einen gewissen Winkel dazu rechnen und kommt nicht so leicht durcheinander.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Danke, werd's mir fürs nächste Mal merken. :D

    Ich hab jetzt also das Segment in

    GML-Quellcode

    1. i.direction=turretdir+90

    geändert. Jetzt sieht das ganze aber folgendermaßen aus:



    Die Kugeln werden also nicht vor der Spitze des Turmes kreiert, sondern ein kleines Stück dahinter. Was muss ich da denn genau in der Vektorlänge definieren, damit das nicht mehr der Fall ist?