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.