1. Попробуйте проверить наличие объекта до обращения к его свойству:
if(gameObject && collider.gameObject.name != "Player")
{
Destroy(gameObject);
}
2. Если в момент столкновения пули идёт выстрел, то объект пули не уничтожается, а помещается перед стволом - меняются только координаты.
Как бы, образуется цепной конвейер, что позволяет сильно снизить нагрузку клиента при быстром создании и удалении объектов.