3d Bewegung eines Jets
Verfasst: 15.06.2007 17:13
Ich brauche mal wieder eure Hilfe, allerdings geht es diesmal um Mathematik. Ich habe ein 3d Spiel, in dem man einen Jet Bewegen kann. (Arbeite mit Irrlicht falls das wichtig ist). Der Jet soll sich ja aber immer so bewegen, das es der Neigung entspricht. Wenn der Jet also nach unten geneigt ist, soll er sich nach unten bewegen und nicht nach vorne. Ich habe dazu eine Formel aufgeschrieben. Es hat etwas mit dem 90° Winkel zu tun. Hat der Jet an der X-Achse eine Neigung von 45°, teile ich diese durch 90 und dann bekomme ich das ergebnis. An der Z Achse bewegt sich der Jet also mit der halben Geschwindigkeit nach vorne. Wenn ich diese Rechnung aber durchführe kommt eine unsagbar Große Zahl als Ergebnis raus. Hier ein Beispielcode.
Wie bereits gesagt kommt bei der BewegungJetZ bei mir über 200 Milliarden Raus, ich denke das die Variable hier an ihren Grenzwert stlößt. Aber warum? Oder gibt es eine Einfacherere Methode das mit der Neigung zu machen?
Code: Alles auswählen
define.d JetX, JetY, JetZ, BewegJetX, BewegJetY, BewegJetZ, NeigungX, NeigungY, NeigungZ
Repeat
...blablabla
while IrrRunning()
BewegJetZ = NeigungX/90
BewegJetY = NeigungZ/90
BewegJetZ + JetZ
BewegJetY + JetY
BewegJetX + JetX
IrrSetNodePosition(*Jet, JetX, JetY, JetZ)
IrrSetNodeRotation(*Jet, NeigungX, NeigungY, NeigungZ)
If IrrKeyEventAvailable()
*Taste = IrrReadKeyEvent()
Select *Taste\key
Case #IRR_KEY_ARROW_UP
If *Taste\direction = #IRR_KEY_DOWN
NeigungX -1
endif
Case #IRR_KEY_ARROW_DOWN
If *Taste\direction = #IRR_KEY_DOWN
NeigungX + 1
endif
EndIf
Case #IRR_KEY_ARROW_LEFT
If *Taste\direction = #IRR_KEY_DOWN
NeigungZ -1
endif
EndIf
Case #IRR_KEY_ARROW_RIGHT
If *Taste\direction = #IRR_KEY_DOWN
NeigungZ + 1
endif
;---Hier das Ganze noch mit Y, aber ich brauche zunächst ma nur die Z Achse
EndIf
Case #IRR_KEY_ESCAPE
If *Taste\direction = #IRR_KEY_DOWN
Beenden = 1
Else
Beenden = 0
EndIf
EndSelect
EndIf
wend
Until Beenden = 1
IrrStop()
FreeIrrlichtWrapperDLL()