- Home /
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 !
Answer by EvilTak · Apr 29, 2014 at 01:59 PM
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.
Answer by Lolifius · Apr 29, 2014 at 07:24 PM
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?
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                