- Home /
Destroying object using his name and raycast
I have a big problem its driving me crazy so im hoping someone will help me :D
I have this game when i press mouse button 1 it instantiates a cube at the position when the ray hits. This part of the program works fine and looks like that :
if(Input.GetButtonDown("Fire1")&& Physics.Raycast (cam.position, cam.forward, hit, 100)!=false )
{
Instantiate(box,point,Quaternion.identity);
}
Then when i press mouse button 2 the object that the ray hits is destroyed. That part works allso well, too well and it looks like this:
if(Input.GetButtonDown("Fire2"))
{ if (Physics.Raycast (cam.position, cam.forward, hit, 100) ) {
if(hit.transform.gameObject)
{
Destroy(hit.transform.gameObject);
}
}
}
The problem is when i press mouse button 2 it destroys every object the raycast hits like for example the terrain and i dont want that i want it to destroy only the box and not eany other object and i allso dont want to turn on the Ignore Raycast on eny of my objects.
Answer by GesterX · May 12, 2011 at 12:59 PM
Just check what object you're hitting. For example you could tag your cube as "cube" or "destroyable".
if(hit.transform.gameObject && hit.transform.gameObject.tag == "Cube")
{
Destroy(hit.transform.gameObject);
}
Yep. Alternatively use gameObject.name.Contains("Cube") to not have to add in a ta :)
@GesterX and Xornogard Answer No1: i used your type of logic but i have 1 problem in this code i want same as your code if i click on the game object so i destroy but sometime it doesn't work . my game become static (just like this, no game object destroy when i clicked) And Answer No 2 : how to destroy gameobject horizontally ?
Answer by Xornogard · Jan 28, 2015 at 11:12 AM
Raycasthit returns you an information that you've hitted an object, If you want to destroy a certain object, then you have to tag it and add
if(hit.transform.gameObject && hit.transform.gameObject.tag == "objectTagName")
{
Destroy(hit.transform.gameObject);
}
otherwise it will destroy anything it hits ;)