Bullet Shoot with RayCast don't destroy onCollisionEnter

Hi All!
I’ve making an FPS Game and i have a charachter controller width attached a spawn object with attached the script for shooting.

		if (curWeapon == "Sniper") {
			if (Input.GetButtonDown ("Fire1")) {
				Ray ray = cam.ScreenPointToRay (new Vector3 (Screen.width / 2, Screen.height / 2, 0));
				RaycastHit hit = new RaycastHit ();
				if (Physics.Raycast (ray, out hit)) {
					Debug.Log ("Ray");
					Debug.DrawLine (transform.position, hit.point, Color.red);
					Debug.Log (hit.point);
					Rigidbody instantiatedProjectile = Instantiate (projectile, transform.position, transform.rotation) as Rigidbody;
					instantiatedProjectile.velocity = (hit.point - transform.position).normalized * 20;
					instantiatedProjectile.rotation = Quaternion.LookRotation (instantiatedProjectile.velocity);

Attached to the projectile prefab i have this script:

public class BulletCollision : MonoBehaviour {
	void OnCollisionEnter (Collision col)
		Debug.Log ("Destroy");
		Destroy (this.gameObject, 0.0f);

The problem is that the collision is detected but the projectile don’t destroy…

The setting of the scene is:

  • Walls with mesh Collider
  • prefabs with rigidbody and sphere collider and the above script
  • spawn object with shooting script

Why the projectile pass through walls even if collisionenter is setted?

Thanks in advance.

So the word “Destroy” is appearing in the log? is this when you shoot the walls or when you shoot anything else? Is the collider on the wall set to “trigger” by chance? does it have a rigidbody component on it for the collision? have you tried setting both to triggers and used “OnTriggerEnter” to see if it’s a physics issue?