内容纲要
var dir = target.position - transform.position;

//方式1   点乘
var dot = Vector3.Dot(transform.forward, dir.normalized);
var forwardOrBackward = Math.Abs(dot) < 0.1f ? Direction.Center : dot > 0 ? Direction.Forward : Direction.Backward;
var dot1 = Vector3.Dot(transform.right, dir.normalized);
var leftOrRight = Math.Abs(dot1) < 0.1f ? Direction.Center : dot1 > 0 ? Direction.Right : Direction.Left;
var angle = Mathf.Acos(Vector3.Dot(transform.forward.normalized, dir.normalized)) * Mathf.Rad2Deg;

//方式2   叉乘
var cross = Vector3.Cross(transform.forward, dir.normalized);
leftOrRight = Math.Abs(cross.y) < 0.1f ? Direction.Center : cross.y > 0 ? Direction.Left : Direction.Right;
var cross1 = Vector3.Cross(transform.right, dir.normalized);
forwardOrBackward = Math.Abs(cross1.y) < 0.1f ? Direction.Center : cross1.y > 0 ? Direction.Forward : Direction.Backward;
angle = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(transform.forward.normalized, dir.normalized))) * Mathf.Rad2Deg;
public enum Direction
{
    Forward,
    Backward,
    Left,
    Right,
    Center,
}