Ergebnis 1 bis 8 von 8

Thema: Benötige Hilfe: Script zur Berechnung der Flugbahn

  1. #1

    Benötige Hilfe: Script zur Berechnung der Flugbahn

    Guten Abend.
    Ich arbeitet gerade daran neue Zauber in ein kleines größeres Projekt von mir einzubauen und muss leider feststellen, dass ich nicht ganz in der Lage bin die Flugbahn für die Projektile von einem Zauber richtig zu berechnen.

    Der Zauberhergang ist schwer zu beschreiben daher habe ich ein Bild vorbereitet.
    Anhang 10233
    Hier zu sehen ist der Held (roter Kreis) welcher sein Ziel (blauer Kreis) gewäht hat und den Zauber wirkt.
    Es werden 4 Projektile (orange Kreise) erschaffen und zwar hinter dem Helden, das heist im entgegengesetzten Winkel zum Ziel.

    Diese Projektile sollen sich nun in einer weichen Flugbahn auf das Ziel zubewegen und es auch verfolgen falls dieses seine Position verändert. Allerdings sollen diese Projektile nicht geradeaus fliegen sondern ihren Winkel stetig anpassen, zuerst recht stark um die erste große Kurve zu nehmen und anschließend zielsicher auf den Feind zufliegen.

    Genau diese Bewegung fällt mir recht schwer. Ich habe jedem dieser Projektile einen Bewegungswinkel gegeben, in jedem Update-Durchlauf bewegen sie sich geradeaus in ihre Bewegungsrichtung. Die Bewegungsrichtung muss dann angepasst werden allerdings weis ich nicht recht um wie viel.

    Ich hoffe mir kann jemand hierbei helfen.

  2. #2
    kann hier nur in theorie helfen...hab mich noch net mit der syntax von rpgmaker auseinandergesetzt...
    ...das die bewegung immer weich wird kannst du bei verfolgen vergessen...wenn es sich aber anpassen muss dann würde ich sagen das sich die Bewegung als "X-achsenschritt/Y-achsenschritt= X-entfernung/Y-Entfernung"...

    nun der trick...

    ------------------------------------------------------------------

    Wenn X-Enfernung>0
    Dann X-plus=1
    Wenn X-Enfernung<0
    Dann X-plus=-1
    Wenn Y-Enfernung>0
    Dann Y-plus=1
    Wenn Y-Enfernung<0
    Dann Y-plus=-1

    Wenn X-Entfernung+Y-Entfernung=0
    Dann "Projektile treffen"
    {
    Wenn X-Entfernung<Y-Entfernung
    Dann Y-Entfernung+Y-plus
    Sonst
    Wenn X-Entfernung>Y-Entfernung
    Dann X-Entfernung+X-plus
    Sonst
    Wenn X-Entfernung=Y-Entfernung
    Dann
    {
    X-Entfernung+X-plus
    Y-Entfernung+Y-plus
    }
    }

    --------------------------------------------------

    hoffe das hilft weiter...wenn du drehungen der Projektile haben willst musst du halt noch bild im fall X-Entfernung=Y-Entfernung auf quer ändern und bei den anderen halt in die entsprechende richung...im kopf behalten musst du aber...wenn jemand auf dich zukommt kann es rechteckig werden

  3. #3
    Ich schreibe das System natürlich mit Ruby im RPG-Maker XP.
    Das Problem liegt einzig daran den Kreisbahnabschnitt der Flugbahn möglichst einheitlich zu halten und ungefähr der vorgegebenen Form im Bild anzupassen.

  4. #4
    ok...ich sags dir nicht gern, aber viel besser als das system da oben wird es nicht gehen...wie gesagt...hab mich da mit der Syntax noch net beschafft und...nunja....aus dem grund dass die Projektile folgen sollen...wird wir es nur möglich sein einen bestimmten verlauf der Projektile zu behalten wenn sie so schnell sind das das Ziel sich ohnehin wenig bewegt...weil sich nunmal die flugbahn anpasst... Wenn der gegner zuerst 4 Schritte entfernt ist und dann vor dir steht wird es wohl oder übel ein kreis werden...
    ...wie auch immer...du könntest den x-Schritt auch um eins verzögert ansetzen solange Y-Entfernung mehr als x (mussu mal schauen je kleiner x desto runder wird es...erhöht aber die dauer bis es trifft auch, nach zeichnung empfele ich x immer als Y-Entfernung/2 zu definieren) ist, das würde das ganze ründer wirken lassen...mussu halt mit ja/nein Variablen arbeiten...das geht noch komplizierter und flüssiger wird bei dem Schachbrettsystem von RPGmaker aber wohl net so stark zu buche schlagen...
    Aber Endlösung sollte dir wer sagen der mehr Ruby spezifische erfahrungen hat

  5. #5
    Zitat Zitat von Dylas Beitrag anzeigen
    ok...ich sags dir nicht gern, aber viel besser als das system da oben wird es nicht gehen...wie gesagt...hab mich da mit der Syntax noch net beschafft und...nunja....aus dem grund dass die Projektile folgen sollen...wird wir es nur möglich sein einen bestimmten verlauf der Projektile zu behalten wenn sie so schnell sind das das Ziel sich ohnehin wenig bewegt...weil sich nunmal die flugbahn anpasst... Wenn der gegner zuerst 4 Schritte entfernt ist und dann vor dir steht wird es wohl oder übel ein kreis werden...[...]
    Du scheinst nicht ganz zu verstehen, ich verwende nicht die Standard-Methoden des Makers. Figuren können sich frei in 360°-Richtung bewegen, pixelgenau. Die gesamte Engine ist (fast) komplett selbstgescriptet.
    Ich gehe derzeit so vor jedem Projektil einen Bewegungswinkel zu geben und diesen dann abhängig von dem Winkel zum Ziel, der Entfernung, der Lebenszeit des Projektils und der Drallrichtung anzupassen.
    Allerdings ist meine Vorgehensweise eher intuitiv anstatt auf irgendwelchen mathematischen Grundlagen basiert, weshalb das Ergebnis wohl auch etwas verbesserungswürdig erscheint.

    Was ich suche ist eine mathematische Formel nach welcher ich die Bewegungsbahn berechnen kann.

  6. #6
    aso...sorry...kling nach sinus funktion...daran erinner ich mich net mehr gut...sorry für die zeitverschwendung...
    denke es müsste iwie durch 1/a*sin("zurückgelegte wegstecke"/"gesamtstrecke"*2pi) oder so beschrieben werden...prob ist das sich gesamtstrecke ändert...wie auch immer a macht dabei flacher also so um 10 wählen...und das wäre natürlich nur die abwandlung des eigentlichen weg um ihn in ne kurve zu verwandeln...hoffe es hilft wenigstens etwas...

  7. #7
    Um den flugbahn zu berechnen gibst du erstmal das projektil ein winkel relativ zu dem held ein, und benutzt dann arc tan um den winkel zwischen das projektil und das ziel zu berechnen. Wenn du diesem winkel hast, checkst du ob der grösser als eine gewisse grösse ist, z.b. 5 grad, und wenn je dann änderst du dem winkel mit 5 grad. Das bewegen machst du mit r*cos(x) für die x richtung und r*sin(x) für die y richtung wo x dem winkel des projektil ist und r irgendein konstant für dem geschwindigkeit ist. Damit erschaffst du bewegungsbahn wie in dem zeichnung.

    Dinge zu beachten ist dass du noch berechnen muss in welcher quadrant das ziel sich befindet relativ vom projektil, und du musst auch noch berechnen (mit nen "if" oder so) welcher richtung das projektil drehen soll, bzw. am liebsten in dem richtung wo der sich am wenigstens drehen muss

  8. #8
    Es hat sich bereits erledigt, ich habe eine annehmbare Lösung gefunden, ich danke für die Anteilnahme.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •