Gravitation für Asteroids

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

  • Gravitation für Asteroids

    Wie der Titel bereits sagt, bräuchte ich ein Script, was die Gravitation für ein Asteroids-Game berechnet.
    Z.B.: in der Art - Klick!
    Sry, wenn das jetzt so rüberkommt als wär ich zu faul zu suchen, aber ich hab wirklich bei Google nachgeguckt.
    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
  • Hi,
    ich habe das spiel jetzt nicht gespielt, aber versuche es mit diesem code:

    GML-Quellcode

    1. in = instance_nearest(x,y,obj_asteroid);
    2. gravity_direction = point_direction(x,y,in.x,in.y);
    3. gravity = 0.5;
    ist nicht getestet, sollte aber zu einem brauchbarem ergebniss kommen.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Original von Nobody-86
    Hi,
    ich habe das spiel jetzt nicht gespielt, aber versuche es mit diesem code:

    GML-Quellcode

    1. in = instance_nearest(x,y,obj_asteroid);
    2. gravity_direction = point_direction(x,y,in.x,in.y);
    3. gravity = 0.5;
    ist nicht getestet, sollte aber zu einem brauchbarem ergebniss kommen.

    8| Was genau macht dieses Script?
    Es sieht mir eher danach aus, als ob es das Schiff in richtung Asteroiden lenkt...
    Es soll aber lediglich die Trägheit des Schiffs mit der Antriebskraft verrechnen.
    (Ich kann das jetzt hier nicht so gut beschreiben, deshalb ja das Beispiel.)
    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
  • der script bewirkt das das schiff in richtung den am nächsteligenden asteroiden angezogen wird, das ist schon richtig. wen über speed und direction gehst könnte es sein das die direction und gravitydirection in komplikationen kommen (muss aber nicht, probier aus) wen ja dan probiere es so:

    GML-Quellcode

    1. in = instance_nearest(x,y,obj_asteroid);
    2. grav = 0.5
    3. x+=cos(point_direction(x,y,in.x,in.y)*grav;
    4. y-=sin(point_direction(x,y,in.x,in.y)*grav; //vieleicht += ka,
    der macht genau das gleiche, schließt aber eventuelle verwechselungen mit der gravity_direction und direction aus. (das passiert mir schonmal, ich weiß auch nciht warum)
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Original von Nobody-86
    der script bewirkt das das schiff in richtung den am nächsteligenden asteroiden angezogen wird, das ist schon richtig. wen über speed und direction gehst könnte es sein das die direction und gravitydirection in komplikationen kommen (muss aber nicht, probier aus) wen ja dan probiere es so:

    GML-Quellcode

    1. in = instance_nearest(x,y,obj_asteroid);
    2. grav = 0.5
    3. x+=cos(point_direction(x,y,in.x,in.y)*grav;
    4. y-=sin(point_direction(x,y,in.x,in.y)*grav; //vieleicht += ka,
    der macht genau das gleiche, schließt aber eventuelle verwechselungen mit der gravity_direction und direction aus. (das passiert mir schonmal, ich weiß auch nciht warum)

    Ja, das mag ja sein, du hast mich trotzdem falsch verstanden.

    Ich will NICHT, dass das Schiff von den Steinchen angezogen wird.
    Wie gesagt: Versuch mal das Game (Klick).
    Oder das.
    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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kilik ()

  • Ok, vergesst das 2.

    Die ganz normale Trägheit + Manuelle Beschleunigung.
    (Siehe 1. Game.)
    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
  • ich weiß ganricht was du hast, sry ... aber mein code macht genau das was du willst (zumindest das was ich denke was du willst). darum eine genauere beschreibnung:
    der asteroid der dem jet(x,y,) am nächsten steht wird gesucht, und die gravitation in dessen richtung gelenkt. wen du nun beschleunigst, bzw verzögerst wird der (aktuelle) geschwindigkeitswert mit der gravitataion verrechnet. wen du es ausführlicher bzw. "weicher" habe willst, mach eine reibung (=friction) dazu.

    und ich habe auch keine lust micht auf irgentwelchen seiten anzumelden nur um ein spiel auszuprobieren.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • nun, man kann die gravitation aber nicht so einfach auf den nächstgelgenden asteroiden benutzten, da alle asteroiden eine kraft aufs schiff ausüben. abhängig ist das von der entfernung und ihrer masse. wie wir es bereits in der schule gelernt haben: ^^
    F = gamma * m1 * m2 / r^2
    gamma ist ne konstante und ungefähr gleich 6,67*10^-11Nm²/kg²
    m1/2 sind die massen der beiden körper
    r ist der mittelere abstand.

    diese kraft wirkt natürlich von jedem asteroiden, wobei der nächste am meisten kraft ausübt, vorrausgesetzt das alle asteroiden eine vergleichbare masse haben.
    Bei der berechnung kann man die konstate eigentlich weglassen für das game, das ergebniss wären sowieso newton, mit denen der comp wenig anzufangen weiß^^ Man muss es nun ausbalancieren das je nach stärke der asteroiden das schiff zu jedem angezogen wird.
    Du sieht, gravitation ist fürchterlich komplex, und die funktionen des gm in dieser hinsicht reichen nicht für eine logische physik engine, da muss man hand anlegen.
    Ich hoffe das ist das was du wolltest, wenn nicht poste doch bitte was du genau willst ^^
  • @nobody & Boxxar: NEIN!
    Ich möchte eben NICHT, dass die Asteroiden zum Schif, oder das Schiff zum Asteroiden gezogen wird.

    In diesem Game wird KEIN Objekt von einem anderen beeinflusst (außer bei direkter Berührung).

    Kennt hier wirklich niemand Den Uraltklassiker "Asteroids"?

    Also, versuch zu erklären:
    Das raumschiff steht still, mit "Blickrichtung" x.
    Jetzt wird die Oben-Taste gedrückt.
    Das Raumschiff fliegt los in Richtung x.
    Durch die Trägheit fliegt das Raumschiff auch bei nicht gedrückter Oben-Taste weiter (wird aber stetig langsamer durch Reibung - ja ich weis, um Weltraum gibt's keine Reibung, is mir aber wurscht).
    Durch drücken von rechts oder Links dreht sich das Raumschiff in Blickrichtung y, es liegt jedoch in Richtung x weiter (weil der Oben-Knopf nicht gedrückt ist).
    Der Oben-Knopf wird erneut gedrückt (wenn das Raumschiff sich noch in Richtung x bewegt).
    Die beiden Bewegungen werden miteinander verrechnet, sodass sich die Flugrichtung langsam von x nach y ändert.)

    Ich hoffe das war verständlich genug.
    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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kilik ()

  • Na super...
    Ich hab das jetzt nachgebaut.
    Und es funktioniert auch.
    Nur eine Stelle gefällt mir noch nicht, und zwar das Event für den Up-Key.

    Weder

    GML-Quellcode

    1. motion_set(direction+facing_direction,speed+0.2);
    noch

    GML-Quellcode

    1. motion_set(facing_direction,speed+0.2);
    funktionieren.
    Aber mit dem D&D klappt alles wunderbar.
    (Self
    Direction: "facing_direction"
    Speed: "0.2"
    Relative )

    Was bitte ist da der Unterschied?
    Ich will das Game nämlich weitestgehend in GML machen.
    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
  • Original von Robin
    Mach es mit:

    GML-Quellcode

    1. motion_add(facing_direction,0.2)

    Yeah, thx.^^

    Ok, damit wäre das Problem gelöst.
    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