Limit in Circle

I have code that limits the output of the sight abroad by the square. How to do the same only in a circle?

aim.transform.position = 2 * transform.position - Camera.main.ScreenToWorldPoint(Input.mousePosition) + transform.forward * 10;

if(aim.transform.position.x >= transform.position.x + 2) aim.transform.position = new Vector2(transform.position.x + 2, aim.transform.position.y);

else if(aim.transform.position.x <= transform.position.x - 2) aim.transform.position = new Vector2(transform.position.x - 2, aim.transform.position.y);

if(aim.transform.position.y >= transform.position.y + 2) aim.transform.position = new Vector2(aim.transform.position.x, transform.position.y + 2);

else if(aim.transform.position.y <= transform.position.y - 2) aim.transform.position = new Vector2(aim.transform.position.x, transform.position.y - 2);

If I understand correctly what you’re asking, then you want:

Vector2 delta = (Vector2)aim.transform.position - (Vector2)transform.position;
if (delta.magnitude > maxRadius) delta = delta * maxRadius/delta.magnitude;
aim.transform.position = transform.position + delta;

So just get the vector from our position to aim; limit that vector to no more than ‘maxRadius’ length; and then use that to set the aim position.

1 Like

Thank you. Exactly what is needed.