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

Ghandi

Treue Seele

  • »Ghandi« ist der Autor dieses Themas

Beiträge: 218

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

1

10.05.2003, 21:37

Fehler in 2. Kollisiontut?

Erstens: Also erstens glaube ich im zweiten Kollisionstutorial im code einen Fehler entdeckt zu haben und zwar in der Funktion LineHitsVertex, wenn er dann das Vertex durch die 3 Planes begrenzt, wird bei jeder LineHitsPlane aufruff die originalplane mit der seitenplane überschrieben, wodurch das ganze dann nicht mehr geht. Es müsste also einfach eine Zweite "PLANE" Variable deklariert werden in die dann die jew. Seitenplane gespeichert wird. Es kann allerdings auch daran liegen das meine "PLANE" Variable keine doppelten (union) planekoordinaten(vector) hat (ich muss dein code für opengl konvertieren).

Zweitens: Wie realisiere ich es das ich mit der Maus in einem 3D-Raum etwas anklicken kann (wie in Freelancer zum beispiel). Ich weiß das ich dazu eine Linie brauchen mit dem Startpunkt beim Spieler und dem Endpunkt...genau da liegt das Problem, ich weiß nich wie ich die Koordinaten des Endpunkt berechne.

Drittens: Problem mit Sliding und Kollision - wenn ich mit einem Objekte Kollidiere dann "rutsche" ich daran entlang, das funktioniert auch suber, aber wie mach ich das wenn ich mit mehreren Objekten kollidiere, dann würde ich beim "sliden" zum Beispiel in das andere Objekt reinrutschen. Ich hab das jetzt erstmal so gelösst dass, wenn ich mit mehr als einen Objekt kollidiere ich nicht "slide" sondern die Spielerposition wieder auf die vorherige Position zurückgesetzt wird. Wenn ich jetzt aber mich mit hoher geschwindigkeit bewege (freier fall aus grosser höhe z.b.) würde ich praktisch schon weit vor dem Objekt mit dem ich kollidiere stehen bleiben.

So das wrs, hoffe ihr könnt mir helfen.
Alles ist gut so wie es ist, am besten ist jedoch das niemand dies akzeptiert.

error C2039: 'DerSinn' : ist kein Element von 'CLeben'

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

11.05.2003, 03:08

Zum ersten (den Rest beantworte ich später, bin jetzt zu müde ;)): Nein, da ist kein Fehler. Die Funktion heißt außerdem LineHitsTriangle und nicht LineHitsVertex.
Jede Ebene wird nur einmal gebraucht, darum kann man ruhig die Originalebene überschreiben.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

11.05.2003, 10:17

Zum zweiten: Im DirectX SDK gibt es ein Beispiel zum Thema Picking. Schau es Dir einmal an, es ist denke ich recht aufschlussreich. Es wird gezeigt, wie man Picking mit Hilfe der D3DX-Library und auch per Hand machen kann.

Zum dritten: Du solltest eine Linie zwischen der alten und der neuen Position des Spielers erstellen und prüfen, ob diese ein Objekt schneidet. Wenn ja: Kollision -> den Spieler bis zum Schnittpunkt bewegen. Ansonsten ganz normal weitermachen.

Ghandi

Treue Seele

  • »Ghandi« ist der Autor dieses Themas

Beiträge: 218

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

4

11.05.2003, 12:32

Zum ersten: Also bei mir gings erst richtig als ich eine extra-plane variable genommen hatte, aber liegt wahrscheinlich wirklich daran das ich nich genau die selbe structur als PLANE benutze, is auch egal.

Zum zweiten: Eigentlich will ich kein DirectX (zum. Direct3D/Draw) verwenden, sondern OpenGL, ich weiß nich ob mir das Tut trotzdem was bringt.

Zum Dritten: Das Problem ist, wie ich die "EndPosition" berechne wenn ich mit mehreren Objekten gleichzeitig kollidiere, so das ich dann nich in einem Objekt halb drinstecke, weil ich bloss die Kollision mit dem anderen Objekt beachtet hab.
Alles ist gut so wie es ist, am besten ist jedoch das niemand dies akzeptiert.

error C2039: 'DerSinn' : ist kein Element von 'CLeben'

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

11.05.2003, 13:00

Zum zweiten: Die dort gezeigte Methode klappt mit allen APIs, also auch mit OpenGL.

Zum dritten: Bitte nochmal genauer erklären...

QuestOfDreams

Frischling

Beiträge: 3

Wohnort: Austria

  • Private Nachricht senden

6

31.01.2004, 01:31

Sorry, dass ich dieses alte Thema noch mal aufrolle, aber wie Ghandi in seinem 1. Punkt feststellt, ist auch mir nicht ganz klar, wie dieser Teil richtig funktionieren kann.
Um die 3 begrenzenden planes zu erstellen, braucht man doch jedesmal eine Kante des Dreiecks und den Normalvektor dieses Dreiecks. Dieser wird aber mit dem Normalvektor der neu erstellten Ebene überschrieben und kann so für die 2. und 3. plane nicht mehr richtig sein.
Oder überseh ich hier irgendetwas? ???

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

31.01.2004, 09:52

Aah, jetzt sehe ich, was Ihr meint!
Ja, das ist in der Tat ein Fehler.
Danke, ich werde das sofort korrigieren!

Edit: Erledigt!
Der Fehler war auch im Buch drin.
Komischerweise funktioniert es aber trotzdem.

Werbeanzeige