Hi there,
I’m trying to find the ‘exit’ point of a Physics2D.Raycast through a CircleCollider2D:

So right now I’m trying to calculate the angle to the center from hit.point, and then reflect than back out to the exit, but it’s bearing no fruit.
Here’s what I’ve got currently, any help is thoroughly appreciated!
public void HandleCircleHit(RaycastHit2D hit, Vector2 direction) {
Vector2 directionToCenter = hit.collider.transform.position - (Vector3)hit.point;
float angle = Vector2.Angle(direction, directionToCenter);
Vector3 cross = Vector3.Cross(direction, directionToCenter);
angle *= cross.z < 0 ? 1 : -1;
float centerAngle = 180 - Mathf.Abs(angle + angle);
float directionModifier = angle < 0 ? -1 : 1;
Vector2 directionToOtherEdge = Quaternion.Euler(0, 0, centerAngle * directionModifier) * directionToCenter;
Vector2 edgePosition = (Vector2)hit.collider.transform.position + (directionToOtherEdge.normalized * (hit.collider as CircleCollider2D).radius);
Debug.DrawLine(hit.point, hit.collider.transform.position, Color.red, 3f);
Debug.DrawLine(hit.collider.transform.position, edgePosition, Color.red, 3f);
}