Immortal enemies when reanimated, or pooled game objects re-activated do not respond to collisions?

Ok I've just started adding a simple object pooling system to my game, bullets, enemies and powerups are recycled using a simple arraylist of active objects and a stack of used ones.

And it was looking like I had it working until.. the enemies became unkillable once they were recycled.

The recycling is simply a

Deactivation using

go.active = false / ridgidbody.velocity = Vector3.zero

Activation using

go.active = true

The bullets still work on new enemies and enemies not pooled but it looks like the problem is the enemies, bullets just bounce off them...

It looks like they are not responding to OnCollision events their internal game state looks good health OK update cycle working?

Double-check everything about their state, before and after, using the inspector. A simple example of what can go wrong: if you have a death animation or make the enemy into a ragdoll, a script might turn on is-kinematic or deactivate the rigidbody or collider.

If you can get two enemies on screen, one resurrected, then pause your game and compare them in the inspector, hopefully you'll see what's different.

I mentioned the physics components a the top because it sounds like you already checked over your own state variables like health, but of course you should check everything.

Note that you can use the Debug mode of the Inspector to see private variables.