ODE: Objekt je nach Kameraausrichtung bewegen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Mau

Betreff: ODE: Objekt je nach Kameraausrichtung bewegen?

BeitragDi, Okt 10, 2006 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe gerade ein kleines Problem mit ODE und einem Objekt, das man mittels Cursor-Tasten in vier Richtungen bewegen kann (links, rechts, vor, zurück).

Ich habe das bisher so gelöst:

Code: [AUSKLAPPEN]
If KeyDown(205) dBodyAddForce PlayerObj\Body, force,0,0
If KeyDown(203) dBodyAddForce PlayerObj\Body,-force,0,0
If KeyDown(208) dBodyAddForce PlayerObj\Body,0,0,-force
If KeyDown(200) dBodyAddForce PlayerObj\Body,0,0, force


Klappt auch, allerdings sind damit die Richtungen fest vorgegeben (absolut). Wenn die Kamera sich z.B. dreht, hat der Spieler das Gefühl, das die Richtungen vertauscht wären.

Deshalb würde ich das am liebsten machen, wie bei den Konsolenspielen -dort ist z.B. "links" immer dort, wo aus Sicht der Kamera links ist usw.

Aber wie könnte man das mit ODE umsetzen? Laut User Manual gibts da die Befehle

dBodyAddForceAtRelPos
dBodyAddRelForceAtPos
dBodyAddRelForceAtRelPos

-aber ich habe keinen Plan, wie die benutzt werden sollten Sad
Alles muss, nichts kann!
 

Dreamora

BeitragDi, Okt 10, 2006 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst den Kraftvektor berechnen ausgehend von der aktuellen Blickrichtung in welche "vorne" ist.

Dazu kannst du einen Vektor von 0,0,Force mittels TFormVektor einfach von der aktuellen Entity nach 0 transformieren und erhälst den Vektor den die Kraft in "weltkoordinaten" hat welche du für ODE brauchst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Mau

BeitragDi, Okt 10, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Etwa so?
Code: [AUSKLAPPEN]
; CURSOR-TASTE LINKS
TFormVector -force, 0, 0, Camera, 0


Und mit welchem ODE-Befehl wende ich dann die TFormed-Werte am zu bewegenden ODE-Objekt an? In der User Reference sind vier oder fünf "relForce(At)"-Befehle aufgeführt, aber ohne ein Beispiel. Ist wirklich schwer, da einen Durchblick zu erhalten Confused
Alles muss, nichts kann!

StepTiger

BeitragDi, Okt 10, 2006 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
xmove#=sin(ywink#)*cos(xwink#)*move#
ymove#=sin(xwink#)*move#
zmove#=cos(ywink#)*cos(xwink#)*move#


ich hoffe, das reicht
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragDi, Okt 10, 2006 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mau hat Folgendes geschrieben:
Etwa so?
Code: [AUSKLAPPEN]
; CURSOR-TASTE LINKS
TFormVector -force, 0, 0, Camera, 0


Und mit welchem ODE-Befehl wende ich dann die TFormed-Werte am zu bewegenden ODE-Objekt an? In der User Reference sind vier oder fünf "relForce(At)"-Befehle aufgeführt, aber ohne ein Beispiel. Ist wirklich schwer, da einen Durchblick zu erhalten Confused


du kannst obigen befehl nehmen, mit tforcedx() tforcedy() tforcedz()
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Mau

BeitragMi, Okt 11, 2006 1:42
Antworten mit Zitat
Benutzer-Profile anzeigen
tforcedx()? ODE kennt diese Befehle nicht, wahrscheinlich meintest du TFormedX() etc.

Das ist schon klar -aber ich fragte ja, wie ich dann anschliessend die TFormed-Werte an ODE übergeben kann (mit welchem ODE-Befehl kann man diese TFormed-Werte dann auf den Body des zu bewegenden Objekts übetragen)?
Alles muss, nichts kann!
 

Dreamora

BeitragMi, Okt 11, 2006 7:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dBodyAddForce

Da der ja, so wie es aussieht, Kräfte in Weltkoordinaten erfordert, was du durch das TFormVektor mit dem lokalen Kraftvektor nach 0 erreicht hast Smile


Und ja, sorry, meinte natürlich TFormed Embarassed
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Mau

BeitragMi, Okt 11, 2006 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Super Very Happy Das funktioniert, danke euch!
Alles muss, nichts kann!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group