Open jjoshpoland opened 4 years ago
Update for insight - after recreating the code from scratch without any references to 2D or flying, I was able to implement logic that keeps the unit looking forward along the z axis without spinning in circles.
Logic for forward looking (doesn't work when inserted into current master branch):
public static Quaternion GetLookDirection(Vector3 direction, ISteerable unit)
{
direction.Normalize();
Quaternion targetRotation = Quaternion.LookRotation(direction);
Quaternion newRotation = Quaternion.Slerp(unit.Rotation, targetRotation, 20f * Time.deltaTime);
return newRotation;
}
unit in the above case is just a interfaced reference to a monobehavior with the MovementAIRigidbody logic implemented
Using the 3d units, the lookatdirection function seems to orient units using the x axis as forward, as they will align their x axis with the velocity direction instead of their z axis.
I've tried messing with the LookAtDirection code and haven't been able to determine the issue. The math looks right, so I don't know if the x-forward assumption is made somewhere else I haven't found. This would be useful for most applications as the assumption is that z is forward.