Slow turn to point at entity?

Blitz3D Forums/Blitz3D Programming/Slow turn to point at entity?

Ryudin(Posted 2008) [#1]
Hey guys.

Is there any way to slowly turn an entity to point it at another? I guess it'd have to be something with vectors, and I'm still a novice at that.

I'm putting it together for the AI for my space game engine, and I tried for an hour without success, then got frustrated and fixed a few other things, but whenever I ran my program, my annoying AI bot was bouncing all over the place.

Help!


Naughty Alien(Posted 2008) [#2]
use this and adopt for any other axis you need

Function EntityPoint( Source , Target, MaxYawSpeed# , MaxPitchSpeed# )

DY# = DeltaYaw( Source, Target )
If Abs( DY ) > MaxYawSpeed DY# = Sgn( DY ) * MaxYawSpeed

;DP# = DeltaPitch( Source, Target )
;If Abs( DP ) > MaxPitchSpeed DP = Sgn( DP ) * MaxPitchSpeed

TurnEntity Source, 0 , DY , 0

End Function


Mortiis(Posted 2008) [#3]
Another one

;Get Vector to the target
Local Dx# = EntityX( target, True ) - EntityX( source )
Local Dy# = EntityY( target, True ) - EntityY( source )
Local Dz# = EntityZ( target, True ) - EntityZ( source )
	
;Align source to the target vector
AlignToVector source, Dx, Dy, Dz, 3, 0.2 ; 3=Axis, 0.2=Rate(turning speed)
	
;Move the source forward
MoveEntity source, 0, 0, speed#



Ryudin(Posted 2008) [#4]
Thanks guys! Both of those worked great!

I didn't even know there was a DeltaYaw function. I wonder how I missed that in the command reference...


Ross C(Posted 2008) [#5]
I think it's a fairly new command, so it might not be in your documentation pack. I believe you can download newer versions.