- Home /
Destroying a prefab on collision with a cube?
Hey, I'm relatively new to Unity3D, and I have to make a game for a piece of course work. The game I am making is a 2D shooter, where the play controls an object that can be moved left and right at the top of the screen. The objective is to protect a cube in the bottom center of the screen, while enemies attack from the left and right. I want the enemies to be destroyed when the hit the cube, but I can't get it to work! here is the code I've been trying to use, which has worked in other parts of the game:
function OnCollisionEnter(collision : Collision) {
if(collision.gameObject.tag == "Player")
Destroy(gameObject);
}
The enemies come from a prefab called SpawnPrefab, and the cube is called Monument. I have tagged both the cube and the prefab/target as player, but it doesn't work! Thanks in advance! :)
I don't see anything wrong here. Put a Debug.Log() statement inside the function to see if you are getting collisions at all. Something like:
Debug.Log("Collision: "+collision.gameObject.name);
How are you moving the enemies? Are you using the Rigidbody or are you manipulating the transform.
What object is the script attached to? Also, OnCollisionEnter only works if the collider is not a trigger. If it is a trigger, use OnTriggerEnter ins$$anonymous$$d:
http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnTriggerEnter.html
@robertbu I am manipulating the transform as far as I know. It's just weird, because the very same prefabs are destroyed when a bullet with the same code on them hits!
I also ran the debug, and nothing happened when my enemies hit, but when my bullet hit the cube, it registered collision :/
Answer by Vonni · Feb 16, 2013 at 11:13 AM
Rhey, I don't know how you set up your game, but if you just move something through something else, it might not trigger collision. Try putting on a rigidbody with isKinematic on to force collision tests.
I added rigidbodies to all of my prefabs, and it works now! Thank you to all who commented, got loads of work to do and not much time to do it!
Your answer
Follow this Question
Related Questions
Collision Detection for a Prefab? 3 Answers
Destroy a GameObject 2 Answers
Destroy on Collision? 1 Answer
using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers