Destroying a projectile on collision
So, i'm try to make a projectile destroy itself once it collides with anything. I use this code but because of my character's own collider the projectile would instantly destroy itself:
#pragma strict
function Update () {
if (Collision2D()){
Destroy(gameObject);
}
}
I then added collision layers and added this code:
#pragma strict
function Update () {
if (Collision2D() && Collision.gameObject.layer == LayerMask.NameToLayer("default")){
Destroy(gameObject);
}
}
However, this gives me this error: "Assets/CollisionDestroy.js(4,36): BCE0020: An instance of type 'UnityEngine.Collision' is required to access non static member 'gameObject'."
I don't know what this means as i'm just learning the engine and haven't been able to find anything. Any help would be appreciated.
Side note: This script is attached to the projectile and the projectile has a rigidbody 2D without gravity and a circle collider 2D.
Answer by brazmogu · Oct 10, 2015 at 03:06 PM
Instead of checking for collision on Update(), you should use OnCollisionEnter instead.
Also, make sure the object has a RigidiBody attached, or the collision might not register for the game object.
Thanks for the help! I had to change it to OnCollisionEnter2D since it was in 2D but otherwise it worked. As a note for anyone else, you'll have to change the "Layer Collision $$anonymous$$atrix" if you want to have it pierce anything.
Your answer
Follow this Question
Related Questions
How to make a sprite retract to its original position? 0 Answers
Why do prefabs overlap each other? 0 Answers
GetComponent is not a member of Object 0 Answers
Problems with raycasting 2D. Probelmas com raycasting 2D. 0 Answers
UnassignedReferenceException: The variable Target of AI has not been assigned [Error] 1 Answer