If fully 3d best to use aligntovector as this uses quarternions internally and avoids the singularities of using euler which can result in gimbal lock. A quick example below.
Hit space to position target in a random place. Change the last param of aligntovector to effect the rate of turning.
Hit space to position target in a random place. Change the last param of aligntovector to effect the rate of turning.
Graphics3D 640,480,16,1 Global CAMERA = CreateCamera() Global TARGET = CreateCube() : ScaleEntity TARGET, 2,2,2 : EntityColor TARGET, 255,0,0 Global MISSILE = CreateCone() : RotateMesh MISSILE, 90,0,0 : FitMesh MISSILE, -1,-1,0,2,2,6 FLAME = CreateCone( 8 , False, MISSILE ) : RotateMesh FLAME, -90,0,0 : FitMesh FLAME,-1,-1,-4,2,2,4 : EntityColor FLAME, 255,128,0 ;init target PositionEntity TARGET, Rand(-50,50 ), Rand( -50,50 ) , Rand( 50,100 ) While Not KeyDown(1) ;target reached or spawn new target position If KeyDown( 57 ) Or ( EntityDistance( MISSILE , TARGET ) < 5 ) PositionEntity TARGET, Rand(-50,50 ), Rand( -50,50 ) , Rand( 50,100 ) EndIf ;get vector to target Dx# = EntityX( TARGET ) - EntityX( Missile ) Dy# = EntityY( TARGET ) - EntityY( Missile ) Dz# = EntityZ( TARGET ) - EntityZ( Missile ) ;align missle to target vector AlignToVector MISSILE, Dx, Dy, Dz, 3, .05 ;move missile forward MoveEntity MISSILE, 0,0,1 ;animate flame ScaleEntity FLAME, 1,1,Rnd( .5, 5 ), 1 RenderWorld() Flip Wend End