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

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

1

04.04.2010, 14:33

Objekt auf Linie bewegen und halten

Hallo,

ich stehe momentan vor einem kleinen größeren Problem, auf das ich bisher keine Antwort gefunden habe.
Die Ausgangslage ist folgende, dass ich ein Objekt habe, welches sich im dreidimensionalen Raum auf einer Linie bewegen soll. Im Grunde ist es auch kein Problem, das Objekt auf ebendieser zu bewegen, nur es gibt Probleme, das Objekt daran zu hindern, diese Linie zu verlassen.
Und zwar arbeite ich mit einer Physikengine, was bedeutet, dass die Bewegung des Objekts durch das anwenden von Kräften geschieht. Durch ebendiese Physikengine ist es aber natürlich auch möglich, dass zwei Objekte miteinander kollidieren(dafür ist sie ja da). Dann kann es allerdings passieren, dass das Objekt von seinem aktuellen Kurs abgebracht wird und sich somit nicht mehr auf der Linie befindet, auf der es sich bewegen soll.
Ich weiß nun ehrlich gesagt nicht, wie das verhindern kann. Einfach einen Linienpunkt berechnen und das Objekt auf diesen setzen ist keine wirklich praktikable Möglichkeit, weil es ja passieren könnte, dass sich ein Objekt auf ebender Position befindet, an die ich das Objekt bewegen will, was dann ungünstig wäre. Außerdem kommt es dann auch so teilweise zu seltsamen Verhalten, wenn ich das Objekt einfach durch verändern der Position auf der Linie halte.

Habt ihr irgendeine Idee, wie ich das ganze lösen könnte?

Vielen Dank schon mal im Voraus.
Fred

2

04.04.2010, 15:13

Viel graue Theorie.
Um welche Objekte handelt es sich denn?

Was ist mit Abbremsen/Beschleunigen, um eine Kollision zu verhindern?
fka tm

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

04.04.2010, 16:46

Viele Physik-Engines bieten für solche Zwecke spezielle Constraints an. Welche benutzt du?

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

04.04.2010, 16:55

Viel graue Theorie.
Um welche Objekte handelt es sich denn?

Was ist mit Abbremsen/Beschleunigen, um eine Kollision zu verhindern?
Das Objekt soll in vor allem eine vom Spieler gesteuerte Figur sein. Was genau du jedoch mit der Frage nach dem Objekttyp willst, verstehe ich nicht so ganz. Abbremsen und Beschleunigen wäre natürlich möglich, aber das Problem daran ist eben, dass das Objekt(Wie es letztlich genau aussieht weiß ich noch nicht^^) vom Spieler gesteuert werden soll. Da wäre es komisch, wenn sich das Objekt quasi von Geisterhand bewegen würde.
Viele Physik-Engines bieten für solche Zwecke spezielle Constraints an. Welche benutzt du?
Ich benutze Bullet. Werde mal schauen, ob ich darüber irgendetwas finden kann.

EDIT: Was ich noch fragen wollte: Dienen Constraints nicht üblicherweise zur Verbindung zweier Objekte? Also zumindest diese, die mir bisher begegnet sind, hatten alle die Aufgabe zwei Objekte in einer bestimmten Form zu verbinden. Das bringt mir dann doch in erster Linie nichts zur Lösung meines Problems.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fred« (04.04.2010, 17:05)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

04.04.2010, 17:41

Du kannst ja sozusagen die Linie und dein Objekt mit den Constraints verbinden. So, wie ich das verstehe soll sich das Objekt einfach immer in etwa in der Nähe der Linie befinden und dieser Folgen. Ich würde da eventuell einfach eine Kraft wirken lassen, welche je weiter du weg von der Line abkommst stärker gegen die Linie zieht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

04.04.2010, 18:22

Constraints können auch auf der einen Seite "an der Welt festgemacht" sein. Die müssen nicht immer zwei Objekte verbinden.

7

04.04.2010, 19:53

Was genau du jedoch mit der Frage nach dem Objekttyp willst, verstehe ich nicht so ganz.

Wollte nur wissen, was deine Objekte darstellen. Autos, Flugzeuge oder was auch immer. ;)

Du hast ja mal 'ne zeitlang mit Aegia/PhysX programmiert.
Warum bist du auf Bullet umgestiegen - und wie kommst du damit klar?
fka tm

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

8

04.04.2010, 21:26

Constraints können auch auf der einen Seite "an der Welt festgemacht" sein. Die müssen nicht immer zwei Objekte verbinden.
Okay danke, werde mal ein bisschen rumprobieren. Auch wenn ich mir noch nicht ganz sicher bin, wie das funktionieren wird ;).

Wollte nur wissen, was deine Objekte darstellen. Autos, Flugzeuge oder was auch immer. ;)

Ja das weiß ich momentan selbst nicht so ganz. Ich probiere im Moment nur ein bisschen damit herum und wollte sehen, ob ich das so hinbekomme, wie ich es gerne hätte. Und im Moment sind es Kegel :).


Du hast ja mal 'ne zeitlang mit Aegia/PhysX programmiert.
Warum bist du auf Bullet umgestiegen - und wie kommst du damit klar?

PhysX hat halt immer diese recht große system-Software benötigt. Und das ist halt bei einem kleinen Spiel dann schon nervig, wenn die Systemsoftware größer ist als das Spiel selbst. Und dann bin ich auf einen sehr kleinen Bullet-Wrapper gestoßen und habe begonnen mir den mal anzusehen und habe mich dann für einen Wechsel entschieden, weil ich bei meinem verwendeten PhysX-Wrapper sehr "PhysX-fern" gearbeitet habe und der Wrapper völlig eigene Objekte und Klassen angeboten hat, mit denen man arbeiten musste. Mit Bullet arbeite ich direkt mit den Bulletobjekten und kann somit auch alles nutzen, was die Engine mir bieten kann(wenn ich das denn will ;)).

Werbeanzeige

Ähnliche Themen