protected float CalculateAngle(GameObject interactingObject) { Vector3 controllerPosition = interactingObject.transform.position; Vector3 toController = controllerPosition - transform.position; Vector3 projection = transform.position + Vector3.ProjectOnPlane(toController, transform.forward); float angle = 0; angle = Utilities.AngleSigned(transform.right * -1, projection - transform.position, transform.forward); // Ensure angle is positive if (angle < 0) { angle += 360.0f; } return angle; }