Probleme mit AlignToVector

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: Probleme mit AlignToVector

BeitragMi, Nov 28, 2007 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute, ich möchte den Y-Winkel einer Entity immer in Richtung einer anderen Entity ausrichten, dabei soll die Bewegung langsam von statten gehen, weshalb ich auch AlignToVector statt PointEntity benutzen möchte, da man bei AlignToVector das AusrichtungsTempo bestimmen kann.

Als Beispiel kann man sich eine Kompassnadel vorstellen, die sich immer in Richtung eines Magneten ausrichtet...

Aber ich krieg das nicht hin, das Objekt welches sich ausrichten soll, verhält sich ganz seltsam.
Wenn ich das "Magnet"-Objekt vorbeibewege, dann bewegt es sich nur ein Stück mit, und macht dann agr nichts mehr. Auch ist die Ausrichtung alles andere als korrekt und sauber.

Benutzt habe ich in etwa diesen Befehl:
ALIGNTOVECTOR Kompassnadel,ENTITYX(Magnet),ENTITYY(Magnet),ENTITYZ(Magnet),2,.1

... und gehofft, dass "die Nadel" nun an ihrer Y-Achse immer zum "Magneten" gedreht wird.
Pustekuchen, wie gesagt.

Was mache ich denn eventuell falsch?

Und/Oder: Gibt es eine Möglichkeit, mit PointEntity denselben "verzögerten" Bewegungs- bzw. Ausrichtungeseffekt zu erreichen? Der Nachteil von PointEntity ist halt, das sich das Objekt immer sofort bewegt, und man die Drehgeschwindigkeit nicht einstellen kann.

Foppele

BeitragMi, Nov 28, 2007 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Ich sag mal so AligntoVektor will mit Vektoren gefüttert werden, nicht mit Koordinaten.
Also erst Vektor Objekt - Ziel berechnen, dann AligntoVector.

Markus2

BeitragMi, Nov 28, 2007 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube du solltest es mit der Z Achse versuchen
die Y Achse zeigt ja nach oben .

Code: [AUSKLAPPEN]

Function where_to_turn#(source_pivot,target_pivot)

 Local temp = CreatePivot()

 PositionEntity temp,EntityX(source_pivot),EntityY(source_pivot),EntityZ(source_pivot)

 PointEntity temp,target_pivot

 Local s# = EntityYaw(source_pivot)
 Local t# = EntityYaw(temp)         

 ; 1 ... 180 Left and -1 ... -180 = Right

 FreeEntity temp

 Local wd# =((s - t) Mod 360 + 540) Mod 360 - 180

 If Int(wd)=0 Then
  Return 0.0
 EndIf
     
 Return -4.0*(wd/10.0)

End Function

 

Nerle

BeitragDo, Nov 29, 2007 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für Eure Hilfe - ich habs nun zwischenzeitlich ersteinmal einfach mit diesem Plastik-Kunstgriff versucht:

TurnEntity Nadel,0,(DeltaYaw(Nadel,Magnet)/100),0

Auf´s erste funktioniert es... Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group