Pfeil-flug-berechnung anhand Winkel und Feuerkraft

em3L

Mitglied
Hallo liebe Tutorianer :D
Als erstes mal hier ein Link von einem Flashgame, welches mich inspiriert hat Klick für Bowmaster Prelude hier.
Wie man in diesem Spiel schnell merkt muss man die Maus auf den Kreis ziehen, drücken, nach hinten ziehen um es Aufzuladen und den Winkel zu bestimmen und dann loslassen.
So nun möchte ich sowas auch machen, wie realisiere ich dies am besten?
Also das mit dem Kreis und dem Winkel hab ich schon also die 2 Variablen Winkel und Feuerkraft wären bereits gelöst, jetzt bräuchte ich nur noch das wichtigste von allem, die Pfeil Flugbahn. Ich habe mit bereits sagen lassen das man da irgendwas mit Math.PI machen muss etc. hab auch schon gegooglet aber nichts passendes gefunden.
Also fest steht der Pfeil soll in einem Bogen fliegen anhand der 2 gegebenen Daten.

Hoffentlich könnt ihr mir weiterhelfen...
Vielen Dank im Voraus
em3L eLem3ntx
 
Hi,

anhand des Winkels und der Feuerkraft kannst Du in der Tat mit dem Sinus und dem Cosinus einen kartesischen Vektor berechnen (spdx und spdy). Nun kannst Du letzteren Wert (spdy: vertikale Beschleunigung) in Intervallen inkrementieren, so dass das Ding einen Bogen beschreibt.

Im Anhang findest Du ein einfaches Beispiel dazu.

Gruß
.
 

Anhänge

  • cannon.zip
    7,7 KB · Aufrufe: 217
Wow vielen Dank für die schnelle Antwort aber leider kann ich das Format nicht mit Flash MX 2004 öffnen, gibt es vtl. einen converter oder ein Plugin.
Oder hast du vielleicht noch eine andere Version davon?

Danke em3L eLem3ntx
 
Ok hat bestens geklappt vielen Dank.

Gruß mit Dank zurück... em3L eLem3ntx

€dit:
Obwohl, jetzt gibt es noch ein Problem... Gibt es eine Möglichkeit das Geschoss dynamisch drehen zu lassen via _rotation?
 
Zuletzt bearbeitet:
Hmm ja das hatte ich auch schon probiert, das Problem bei der Sache ist wenn man das Geschoss zum Beispiel schwach senkrecht nach oben schießt sollte der Pfeil sich auch am Kehrpunkt umdrehen und nicht einfach hochfliegen sie etwas drehen und wieder schräg runterfallen. Außerdem kann es dann passieren das sich das Geschoss (beispiel Pfeil) bei einer zu langen Flugbahn "überdreht", klar man könnte dies mit einer If else lösen, wäre aber keine besonders elegante Methode.

Hoffentlich ist das Möglich?
Danke nochmals... em3L eLem3ntx
 
Hi,

aus spdx und spdy (dem Vektor) kannst Du ja wieder per Math.atan den Flugwinkel berechnen (siehe in meinem Code die Stelle, wo die Kanone rotiert wird). Damit kannst Du den Pfeil in Flugrichtung ausrichten.

Zusätzliche Spielereien wie Überdrehen etc. kann ich Dir mangels Kenntnisse über das Flugverhalten von Pfeilen nicht aus dem Ärmel schütteln - zudem ist es auch nicht Sinn dieses Forums, Euch alles fertig vorzusetzen. ;) Probier doch selbst einfach ein wenig herum.

Gruß
.
 
Ok vielen Dank, hab ein bisschen mit den Werten rumgespielt und folgendes als bestes Ergebnis raus bekommen:
PHP:
var ang = Math.atan(this.spdy / this.spdx);
this._rotation = ang*60;

So fliegt der Pfeil einigermaßen richtig :D

Vielen Dank em3L eLem3ntx
 
Zurück