Hi,
ich hab mal spontan versucht, ein kleines 3D-Auto-Game im Gelände zu machen. Damit mein Auto auch immer so steht, wie es soll, also jenachdem ob es bergauf oder schräg fährt, messe ich die Entfernung von Reifen zu Boden an allen 4 Reifen. Ich möchte dann das Auto so drehen, dass es richtig steht. Funktioniert aber nicht richtig...
Hier der Cdeausschnitt:
lv=X_COLLISIONRAY(99,0,car_x+SIN( 30+car_yrot)*1.5,car_y,car_z+COS( 30+car_yrot)*1.5,0,-1,0)
rv=X_COLLISIONRAY(99,0,car_x+SIN(- 30+car_yrot)*1.5,car_y,car_z+COS(- 30+car_yrot)*1.5,0,-1,0)
lh=X_COLLISIONRAY(99,0,car_x+SIN( 150+car_yrot)*1.5,car_y,car_z+COS( 150+car_yrot)*1.5,0,-1,0)
rh=X_COLLISIONRAY(99,0,car_x+SIN(-150+car_yrot)*1.5,car_y,car_z+COS(-150+car_yrot)*1.5,0,-1,0)
car_xrot=ASIN((lv+rv)-(lh+rh))/10//durch 10 weil der Ausschlag sonst zu extrem wird
//"car_yrot" wird durch spieler bestimmt
car_zrot=ACOS((lv+lh)-(rv+rh))/10//durch 10 weil der Ausschlag sonst zu extrem wird
Funktioniert aber nicht.
Danke schon mal
Gruß
Tenorm
Was funktioniert denn nicht? Hast du einen Screenshot?
Das Auto dreht sich nicht/falsch. Lange erklärung folgt, muss erst noch über verständliche Formulierung nachdenken =D
Schon mal der screenshot
Danke für die schnelle antwort :good:
REEDIT:
OK, Liste der Probleme:
-> x-Rotation funktioniert nur bei 3 von 4 Seiten :'( (also jenach himmelsrichtung, von der ich den berg anfahre)
-> z-Rotation funktioniert nicht/falsch
-> Manchmal haben 2 oder mehrere der 4 messpunkte den selben, bzw. den kehrwert, was ich mir nicht erklären kann, da das ja nur der fall ist, wenn man die rampe gerade anfährt...
REREEDIT:
Erklärung zum screenshot(von oben nach unten)
// zeile 1-5 erklärt/unwichtig
messpunkt links vorne
messpunkt rechts vorne
messpunkt links hinten
messpunkt rechts hinten
x-rotation
y-rotation
z-rotation
[attachment deleted by admin]
Da würde sich das Newton ganz gut machen ;)
Eigendlich kann GLB ja alles was gebraucht wird (und in newton bin ich noch ned richtig drin :whistle: )
für die collision und richtungsangaben bestimmt von Vorteil ;)
Nun, Du hast 4 Punkte aber nur eine Drehrichtung des Fahrzeugs.
Ich würde daher das Fahrzeug auf 3 "Räder" ständern. 2 Vorne, eins hinten in der Mitte.
Jetzt hast Du die Höhen an den 3 Punkten. Wenn Du die Vektoren AB und AC kreuzt, hast Du einen "Nach oben" Vector. Der sollte dir helfen beim Ausrichten. Ist aber nicht trivial. Da wäre Newton schon einfacher.
Die idee mit 3 punkten is ned schlecht, aber da würde ich probleme bekommen, wenn mein auto mit den hinterreifen auf 2 hügeln steht (collisionray würde ja dann, das "tal" ausmessen und das auto würde "versinken"). Ich hab mal die exe hochgeladen.
http://rapidshare.de/files/40232396/Auto.zip.html (http://rapidshare.de/files/40232396/Auto.zip.html)
Auf einer seite des Berges funktionierts einwandfrei, auf der anderen seite ist die z-rot verkehrtherum :S
Kann es sein, dass du die Blickrichtung des Fahrzeugs nicht berücksichtigst. Bei mir stimmen die Achsen nämlich erst dann nichtmehr, wenn ich das Auto neu ausrichte. Solange ich gerade aus fahre stimmt eigentlich alles einigermaßen.
Meinst du mit blickrichtung die y-rotation?
Die messlinien befinden sich immer unter den rädern, auch wenn der wagen sich dreht:
lv=X_COLLISIONRAY(99,0,car_x+SIN( 30+car_yrot)*1.5,car_y,car_z+COS( 30+car_yrot)*1.5,0,-1,0)
EDIT: Versuch mal den Berg von der anderen seite aus anzufahren, da passt die z-rot garnicht, x-rot passt immer. Danke.
Klar passts dann net . Da die Drehung zur Welt bezogen ist . Da dreht sich die Achse nicht mit ;)
du brauchst das:
X_PUSHMATRIX
X_POPMATRIX
;)
check ich ned :O
soll ich die welt beim auto mitdrehenlassen?
Nein, dein Auto brauch seine eigene Matrix sprich vorne muss immer der Z+ sein, links X+ und oben Y+.
Egal wie sich es dreht.
Dafür brauchst du dann POP- und PUSHMATRIX.
Wie geht das, ich denk mit x_pop/pushmatrix kann man nur weitere objekte an eine bestehende Matrix anhängen, nicht eine neue erstellen.
Ich mach dir nachher ein kleines Beispiel, bin grad noch am FMod Wrappen
Hast mir vor 4 Monaten versprochen ein BSP zu machen :'(
Bin zwar schon beim neuen Projekt, aber das Problem is immer noch da =D
Schau grad des Newton durch, werd aber ned schlau aus den BSPs, bei mir kommen nur Fehlermeldungen von Compiler und Windows und wenns mal läuft funktionierts eigendlich au ned richtig. Warte ja immernoch auf das Tutorial (von Gernot?) :whistle: