OverlapCircle funcion to avoid Gameobject creation if Collision ?

Hi everybody !

I’m making a little game with objects appearing when I click. I have this code actually making things work : everytime I use the mouseclick a Gameobject is created where I click on the 2d game I created.

    //Changed to an array of objects assign as many as you have in inspector
    var boxes : GameObject[];
    var boxCounter : int;
     
    function Update()
    {
         if(Input.GetMouseButtonDown(0))//Checks to see if left mouse button was clicked.
         {
              CreateBox();
         }
    }
     
    function CreateBox()
    {
         var mousePos : Vector2 = Input.mousePosition;
         
         if (Physics2D.OverlapCircle(mousePos.x, 0.2, LayerMask.foreground ))
         {     } else {
         
         //Depth you want the center of the object to be is z which I used zero
         var boxPos : Vector3 = camera.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, 10));  
     
         //I used the perfab box's rotation here but you can enter what you'd like as a euler using Quaternion.Euler(x,y,z)
         Instantiate(boxes[boxCounter], boxPos, boxes[boxCounter].transform.rotation);
         
         //This will increment if there are more boxes or reset to 0 if it is the last one.
         if(boxCounter == boxes.length-1)
         {
              boxCounter = 0;
         }else{
              boxCounter ++;
         }
         }
         }

I want to add a OverlapCircle function to avoid the creation of the object if there is already another one where I clicked. I don’t know exactly how this function works, any idea?

Thanks in advance !

Untested, but here is a bit of rewrite that I think gives you what you are looking for. Note that the OverlapCircle() takes a world position, not float or screen position. It returns a collider, so you can check against null. I’ve removed the ‘LayMask.foreground’ parameter. You may need something here, but this is not the right way to do it.

#pragma strict

 //Changed to an array of objects assign as many as you have in inspector
var boxes : GameObject[];
var boxCounter : int;

function Update()
{
	if(Input.GetMouseButtonDown(0))//Checks to see if left mouse button was clicked.
	{
		CreateBox();
	}
}

function CreateBox()
{
	var mousePos : Vector2 = Input.mousePosition;
	var boxPos : Vector3 = camera.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, 10)); 

	if (Physics2D.OverlapCircle(boxPos, 0.2) == null) 
	{
		Instantiate(boxes[boxCounter], boxPos, boxes[boxCounter].transform.rotation);
		boxCounter = (boxCounter + 1) % boxes.Length;
	}
 }