Collider/contact functions on 2d game.

Hi everybody !

I’m making a little game with objects appearing when 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;
     
         //Depth you want the center of the object to be is z which I used zero
         var boxPos : Vector3 = camera.ScreenToWorldPoint(mousePos.x, mousePos.y, 0);  
     
         //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 function to avoid the operation if there is contact/collision between the object that the function have to create and the objects already in the game. I don’t know what function to use and how Is it the collider function?

Thanks in advance !

Use the OnCollisionEnter2d(), stay and exit functions like this:

//Changed to an array of objects assign as many as you have in inspector
    var boxes : GameObject[];
    var boxCounter : int;
    var isColliding = false;
 
    function Update()
    {
         if(!isColliding)
         {
         if(Input.GetMouseButtonDown(0))//Checks to see if left mouse button was clicked.
         {
              CreateBox();
         }
         }
    }
 
    function CreateBox()
    {
         var mousePos : Vector2 = Input.mousePosition;
 
         //Depth you want the center of the object to be is z which I used zero
         var boxPos : Vector3 = camera.ScreenToWorldPoint(mousePos.x, mousePos.y, 0);  
 
         //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 ++;
         }
    }

function OnCollisionEnter2D(Collision2d coll)
{
isColliding = true;
}

function OnCollisionExit2D(Collision2D coll)
{
isColliding = false;
}

The OnCollisionEnter2D() function is called when a collision takes place. The OnCollisionStay2D() function is called each frame the collision is taking place. OnCollisionExit2D() function is called when the collision stops taking place.

Hi ! Thx for your answer. But I don’t see where you used the OnCollisionStay et why is there CollisionD coll in the function. Can you explain it plz?