Stufenweises Ausrichten auf ein Entity
Übersicht

![]() |
JolinahBetreff: Stufenweises Ausrichten auf ein Entity |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich möchte ein Raumschiff auf einen Planeten ausrichten lassen, es soll sich jedoch langsam drehen und nicht sofort ausgerichtet sein wie z.bsp. bei PointEntity. Deshalb hab ich gedacht ich benutze den Befehl AlignToVector weil man da das tempo der Ausrichtung noch angeben kann. Funktioniert eigentlich auch recht gut. Jedoch will ich überprüfen wann die Ausrichtung beendet ist. Ich habe schon verschiedene Varianten versucht. Mit DeltaPitch und DeltaYaw, mit TFormVector usw.. Code: [AUSKLAPPEN] AlignToVector ship,entityx(planet),entityy(planet),entityz(planet),0.1 If DeltaPitch#(ship,planet) = 0.0 and DeltaYaw#(ship,planet) = 0.0 ;Ausrichtung Ende... Endif Theoretisch sollte wenn das Schiff dann ausgerichtet ist, die Winkeldifferenz 0 sein. Ich habe die Werte ausgeben lassen, aber die Werte lagen z.bsp. bei 0.8372 usw.. Dann hab ich es noch mit TFormVector versucht mit Hilfe eines Pivots: Code: [AUSKLAPPEN] AlignToVector ship,entityx(planet),entityy(planet),entityz(planet),0.1 TFormVector 0,0,1,ship,0 x# = TFormedX() y# = TFormedY() z# = TFormedZ() p = CreatePivot() PositionEntity p,entityx(ship),entityy(ship),entityz(ship) PointEntity p,planet TFormVector 0,0,1,p,0 If x# = TFormedX() and y# = TFormedY() and z# = TFormedZ() ;Ausrichtung Ende Endif FreeEntity p So ging es jedoch auch nicht. Aber die Vektoren sollten doch am Ende identisch sein wenn das Schiff ausgerichtet ist? Kann es sein das AlignToVector nicht so genau ist wie PointEntity? |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt hab ich es auch noch mit VectorPitch#() und VectorYaw#() versucht.
Die Funktionen geben den Absoluten Winkel zurück. Aber auch da kam ich wieder auf ein schlechtes Ergebnis: Berechneter Winkel mit VectorPitch() = -22.6022 Winkel nach ausrichten mit AlignToVector = -21.7042 |
||
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bitte sehr...
Code: [AUSKLAPPEN] Graphics3D 640,480,16,2 SetBuffer BackBuffer() Kamera = CreateCamera() Licht = CreateLight() PositionEntity Kamera, 0, 0, -5 RotateEntity Licht ,90 , 0, 0 objekt1=CreateCylinder(20) objekt2=CreateSphere() RotateMesh objekt1,90,0,0 ScaleEntity objekt1,1,1,3 PositionEntity objekt1,0,0,5 EntityAlpha objekt2,.8 EntityColor objekt2,255,100,100 Frametimer=CreateTimer(30) While Not KeyHit(1) If KeyDown(200) Then MoveEntity objekt2,0,.1,0 If KeyDown(208) Then MoveEntity objekt2,0,-.1,0 If KeyDown(203) Then MoveEntity objekt2,-.1,0,0 If KeyDown(205) Then MoveEntity objekt2,.1,0,0 MyPointEntity(Objekt1, Objekt2, 5) UpdateWorld() RenderWorld() ;Die 0.001 ist die Genauigkeit... kleiner = genauer If Abs(DeltaYaw(objekt1,objekt2)) < 0.001 And Abs(DeltaPitch(objekt1, objekt2)) < 0.001 Then Text 100, 100, "AUSRICHTUNG FERTIG" EndIf WaitTimer Frametimer Flip(0) Wend End Function MyPointEntity(x_objekt1, x_objekt2, Abstufungen = 0) If Abstufungen > 1 Then Pitch# = EntityPitch(x_Objekt1) Yaw# = EntityYaw(x_Objekt1) NeuPitch# = Pitch# + (DeltaPitch(x_Objekt1, x_Objekt2) / Abstufungen) NeuYaw# = Yaw# + (DeltaYaw(x_Objekt1, x_Objekt2) / Abstufungen) Else NeuPitch# = EntityPitch(x_objekt1) + DeltaPitch(x_objekt1,x_objekt2) NeuYaw# = EntityYaw(x_objekt1) + DeltaYaw(x_objekt1,x_objekt2) EndIf RotateEntity (x_objekt1, NeuPitch#, NeuYaw#, EntityRoll(x_objekt1)) End Function credit me ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke Ion ![]() Dann scheint aber AlignToVector nicht so genau zu sein? Mit dem Befehl kam ich einfach nie in ne Genauigkeit von 0.001 War immer 0.8 oder mehr *g* |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group