Примерно так:
public class DestroyByDistance : MonoBehaviour
{
public float distance = 20;
public GameObject explosion;
private Transform _player;
public void Start()
{
_player = GameObject.FindGameObjectWithTag("Player").transform;
}
public void Update()
{
if((_player.position - transform.position).magnitude<distance)
{
Destroy(gameObject);
}
}
public void OnDestroy()
{
if(explosion!= null)
{
Instantiate(explosion, transform.position, transform.rotation);
}
}
}
Только не надейтесь, что тут за вас всю игру напишут