I have a bullet spread code which spawns 5 projectiles in the same position. In order to prevent the projectiles from colliding with each other, I used ```Physics.IgnoreLayerCollision```. The bullets are set to their own layer, and I called the function in the ```Start()```, like so:
public LayerMask bullet;
void Start() {
Physics.IgnoreLayerCollision(bullet, bullet);
Debug.Log("Collision ignored");
}
I did not make a mistake with the variables. They're all set up correctly, and the ```Debug.Log``` message actually showed.
----------
The thing is, this actually worked fine when done in my test script, but did not work at all when I moved this to my actual shooting script (Again, no variables were mistaken, everything was set up the way they're supposed to).
Until I tried to modify the shooting of my test script, which made it not work at all for it (for some weird reason).
For extra measures, I also checked if the collision object is in the bullet layer for the projectiles:
void OnCollisionEnter(Collision other) {
if (other.gameObject.layer == bulletLayer) {
return;
}
GameObject effect = Instantiate(particle, transform.position, Quaternion.LookRotation(surfaceNormal));
effect.transform.parent = other.transform;
Destroy(effect, particleTime);
Destroy(gameObject);
Debug.Log("Bullet destroyed");
}
And yet, it showed the ```Debug``` message 5 times (once for each bullet).
----------
This is really getting on my nerves, and any help of any kind would be very much appreciated.
↧