Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.10.2011, 18:15

Lernprojekt: Hover stabilisieren

Hi,

ich hänge gerade bei einem Punkt. Also ich hab etwas simples programmiert wo man den Schub erhöhen oder veringern kann. Je nach dem kämpft es gegen die Gravitation an, um hoch zu kommen.
Ich wollte aber gern ein automatische stabilisator einbauen. Sprich eine mathematische Berechnung damit es von selbst den Schubregelt um nicht runter zufallen aber auch nicht hoch zu kommen.
Und zwar auf der Z-Achse. Wisst ihr zufällig wie man oder womit man das berechnet? Oder ist das soooo simpel das mir das grad nicht einfällt If(simple == true) { emotion = peinlich }

M1 und M2 stehen für Mausklicks

C-/C++-Quelltext

1
2
3
4
5
6
Masse = 1
Schub = clamp(Schub + (M2-M1)*0.1, 0, 10)
Vel += Schub
Vel -= 9.81*Masse
DiffHud = Schub - 9.81*Masse
SpeedHud = Vel
Nichts ist unmöglich.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »MaZy« (09.10.2011, 18:24)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

09.10.2011, 18:29

Wenn der Spieler nichts drückt könntest du einfach verhindern, dass die Geschwindigkeit unter Null fällt.
bzw. Schub geben, wenn sie weit unter Null ist.(wenn es z.b. gerade fällt und nicht sofort in der Luft stehen bleiben soll^^)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

09.10.2011, 18:33

Mach dir doch einfach zwei Grenzen zwischen denen Schub gegeben wird. Wenn du unter die Grenze fällst, wird Schub gegeben und wenn du über die zweige kommst, wird damit aufgehört. Die Grenzen könnten Geschwindigkeiten sein, oder der Abstand zum Boden, oder oder oder.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

13.10.2011, 17:47

Ja, ich weiß. Programmieren kann man es einfach, aber ich möchte die Physik nicht in der Programmierung weglassen. Sonst hätte ich ja auch die Gravitation weggelassen :).

mittlerweile hab ich es gelöst.

Zitat


function number hoverStabilize(This:number, Force:number, Strength:number) {
if(Strength > 1) { Strength = 1 }
This += (Force - This)*Strength
return This
}


In "Force" sind jeweils die Kräfte nach oben und/oder unten gespeichert. Natürlich zusammen gerechnet. "This" steht einfach für eine Variable der immer addiert werden muss, daher sollte es nicht lokal deklariert sein. Und Strength. Darf bzw. kann nicht über 1 sein, sonst verreckt es.

EDIT: Ich merk gerade, dass es bissel falsch ist funktioniert zwar aber der schub wird ja nicht angepasst...
Nichts ist unmöglich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MaZy« (13.10.2011, 21:43)


TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

13.10.2011, 19:59

Schubkraft = -Gewichtskraft -> Schwebezustand.

6

13.10.2011, 21:44

Das wäre immernoch falsch. Wenn z.b. mein Schiff oder Objekt mit etwas kollidiert, dann würde es immer weiter weg schweben.
Nichts ist unmöglich.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

7

13.10.2011, 22:25

Wenn irgendeine andere Kraft auf den Schiff wirkt, musst du die natuerlich genauso ausgleichen. Ist ja nicht so schwer.

Werbeanzeige