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

02.11.2008, 12:50

Ein Problem mit der Bewegung

So,
momentan fliegt mein Raumschiff immer in die Richtung, in die es zeigt, egal, wie hoch die Geschwindigkeit ist

Es wäre allerdings schöner, wenn es sich "physikalisch korrekter" bewegt, also immer in eine Richtung, und erst wenn man wieder beschleunigt, es sich langsam in diese Richtung bewegt, also wie ein Boot am See ^^

Hier mal ein Bild zur Veranschaulichung:


(Link)

(Link)
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

02.11.2008, 12:55

Wie schauen deine Physikkenntnisse aus?
Im Normalfall kommt man mit v_neu = v_alt + delta_zeit * beschleunigung ganz gut zurande.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

02.11.2008, 12:58

Richtungsvektor des Raumschiffs und den Bewegungsvektor unabhängig machen, und dann beim Beschleunigen den Richtungsvektor*Beschleunigungsfaktor zum Bewegungsvektor hinzuaddieren. man sollte vllt noch irgendeinen Mechanismus einbauen, der dafür sorgt, dass der Bewegungsvektor nach einer Zeit die neue Richtung vollständig übernimmt, was nur mit vektoraddition ziemlich lang dauern könnte. Das waren jetz nur mal so meine spontanen Gedanken^^

//EDIT: @Nox: du hast recht, man sollte beim Beschleunigungsfaktor die zeit natürlich auch berücksichtigen :oops:

4

02.11.2008, 13:06

Zitat von »"PCShadow"«

Richtungsvektor des Raumschiffs und den Bewegungsvektor unabhängig machen, und dann beim Beschleunigen den Richtungsvektor*Beschleunigungsfaktor zum Bewegungsvektor hinzuaddieren. man sollte vllt noch irgendeinen Mechanismus einbauen, der dafür sorgt, dass der Bewegungsvektor nach einer Zeit die neue Richtung vollständig übernimmt, was nur mit vektoraddition ziemlich lang dauern könnte. Das waren jetz nur mal so meine spontanen Gedanken^^

//EDIT: @Nox: du hast recht, man sollte beim Beschleunigungsfaktor die zeit natürlich auch berücksichtigen :oops:
wie wärs mit v_neu = (v_alt + delta_zeit * beschleunigung) * bremsfaktor^delta_zeit?
wenn der bremsfaktor gut gewählt wird hat man eine recht gute darstellung von allem. das raumschiff wird automatisch langsamer bei nichtbeschleunigung und es passt sich immer mehr dem eigentlichen geradeausvektor an wenn man weiter beschleunigt, damit kam ich bisher eigentlich ganz gut aus

5

02.11.2008, 15:05

Genion,

kannst du deine Zitiererei mal ein wenig einschränken?
Du müllst damit jeden Thread zu.
Das macht es unübersichtlich und manch einer (so wie ich) hat keinen Bock mehr weiterzulesen.
Es genügt doch (meistens), wenn man das Mitglied via "@" oder fettgedruckt anspricht?!

Wäre nett (und die Datenbank schont es auch) ! ;)

Danke!

Ende der Offtopic-Durchsage.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

02.11.2008, 15:13

v_neu = (v_alt + delta_zeit * beschleunigung) * bremsfaktor^delta_zeit finde ich gewagt.

dann doch eher sowas: v_neu = v_alt + delta_zeit * (beschleunigung - bremskraft).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

02.11.2008, 17:42

Zitat von »"Nox"«

dann doch eher sowas: v_neu = v_alt + delta_zeit * (beschleunigung - bremskraft).

wo du aber immer noch nicht den Richtungswechsel drin hast, fält mir so spontan auf, vllt so:
v_neu = (v_alt - bremsung*delta_Zeit) + v_Richtung*beschleunigung*delta_Zeit
v_Richtung ist dabei die richtung des raumschiffs, sollte normalisiert sein

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

02.11.2008, 17:46

naja der Richtungswechsel würde sich vmtl. in der Beschleunigung ausdrücken, die dann nämnlich ihr Vorzeichen wechselt.

9

02.11.2008, 17:57

da müsste dann aber a. die beschleunigung afaik n vektor sein und b. müsste man die wiederum aus der eigentlichen Beschleunigung (der stärke der triebwerke u.ä.) und der Richtung des Raumschiffs berechnen, wobei mir grad einfällt, das das bei meiner Variante mit der bremsung nicht viel anders ist, also entweder

Quellcode

1
v_neu = v_alt - v_alt*bremsfaktor^delta_Zeit + v_Richtung*beschleunigungsfaktor*delta_Zeit;

wobei bremsfaktor prozentual ist (wie viel der ursprünglichen Geschwindigkeit hat man nach 1ZE noch);
oder Nox Variante mit vorher:

Quellcode

1
2
beschleunigung = v_Richtung*beschleunigungsfaktor;
bremskraft = v_alt*bremsfaktor;

//EDIT: ne, irgendwas stimmt noch nicht mit *delta_Zeit bzw. ^delta_Zeit, aber jetz gibts erstmal essen ;)

10

02.11.2008, 18:31

Ok, danke werds mal probieren :D
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

Werbeanzeige