Praxis-Problem No. 2: Schnittpunkt X/Y

  • GM 8
  • Praxis-Problem No. 2: Schnittpunkt X/Y

    Und hier gleich das 2. Problem:

    Eine Kanone (mit einem langen Rohr) soll auf einen Feind schießen. Die Kanone hat 16 Sprites und kann sich in jede Richtung drehen. Nehmen wir an, die direction ist durch point_direction schon festgelegt, so steht im Step z.B.:

    GML-Quellcode

    1. {
    2. image_index = direction * image_number/360;
    3. image_speed = 0;
    4. }

    So weit, so gut. Jetzt aber soll die Kanone auch Munition verschießen. Natürlich aus dem ENDE des Rohres, versteht sich. Dieses Ende des Rohres befindet sich aber bei jedem Sprite an einer anderen Stelle. Ich kann aber den Origin (auch Hotspot genannt) nur ein einziges Mal festlegen.
    Wenn ich nun möchte, daß die Munition am Ende des Kanonenrohres erstellt wird - muß ich dann wirklich in jedem Schritt erst abfragen, welches Sprites gerade benutzt wird? So mit 16 if-Abfragen oder so was?? Oder geht das auch irgendwie einfacher....?
    Schön wäre ja, wenn jedes Sprite eine eigene Schnittstelle zwischen X und Y-Achse erhalten könnte, aber das geht wohl nicht - oder etwa doch?
    Wäre toll, wenn hier jemand weiterhelfen könnte.
    Viele Grüsse,
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • henrik1235 schrieb:

    Du benutzt lengthdir_x/y am besten:
    Oh, das klingt gut, danke für den Hinweis. Aber könntest Du mir auch noch verraten, wie man das in die Step-Abfrage oben einbauen könnte? Davor, mittendrin, ganz außerhalb....? :D
    Gruss Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Step-Abfrage oben einbauen könnte? Davor, mittendrin, ganz außerhalb....? :D
    Da wo der Gegner schießen tut, du musst noch das ändern was ich dazu geschrieben hab (nicht direction!), xx und yy ist dann die Position wo das ende des Rohrs ist:

    GML-Quellcode

    1. //Mein Coder hier einfügen
    2. var i;
    3. i=instance_create(xx,yy,obj_kugel);
    4. i.direction=direction;
    5. i.speed=2;


    Einfach mit den Werte rumspielen die du eingeben sollst bis es stimmt. ;)

    Eventuell musst du die Werte noch in 16 Werte einteilen:

    GML-Quellcode

    1. //überall direction durch
    2. floor(direction/16)*16
    3. //ersetzen


    Einfach mal rumspielen.^^
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Benutzer online 1

    1 Besucher