Problem with destroying a gameobject

Hey I have an enemy that spawns shoots:

public GameObject projectile;
	public float delay;
	private Rigidbody2D rb2D;
	private Rigidbody2D rocketInstance;
	private float randomAngle;

	// Use this for initialization
	void Start () 
	{
		projectile = GameObject.Find ("Projectile");
		//rb2D = projectile.GetComponent<Rigidbody2D>();
		StartCoroutine (Shoots());
	
	}
	
	// Update is called once per frame
	void Update () 
	{

	}
	IEnumerator Shoots() 
	{
		while (true)
		{
			yield return new WaitForSeconds(delay);
			
			//GameObject clone = (GameObject) Instantiate(projectile, transform.position, Quaternion.identity);
			//clone.rb2D.velocity = -transform.right * speedFactor;


			Rigidbody2D projectileInstance = Instantiate(projectile, transform.position, Quaternion.Euler(new Vector3(0,0,Random.Range (-45f, 45f)))) as Rigidbody2D;

		}
	}
}

an a script attached to the projectiles that should destroy these:

{


	public float destroyTime;

	// Use this for initialization
	void Start () 
	{

		Destroy (this.gameObject, destroyTime);

	}
	
	void OnTriggerEnter2d ()
	{
		Destroy(this.gameObject);
	}
	


	// Update is called once per frame
	void Update () 
	{

	}
}

There is also a script attached to the projectiles to handle the speed:

	public int moveSpeed = 100;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {

		transform.Translate (Vector3.left * Time.deltaTime * moveSpeed);

	
	}
}

This works until the destroyscript starts to destroy the projectiles then I get the error message:
MissingReferenceException: The object of type ‘GameObject’ has been destroyed but you are still trying to access it.

How can I handle this?

Thanks a lot!

projectile = GameObject.Find ("Projectile");

You’re grabbing a reference to a live object in the scene and using that to spawn copies with the Instantiate method. Once that first object gets destroyed, Instantiate can no longer copy it and gives the error.

You should remove that line from the Start() method, drag the projectile to a Prefab folder in your assets, delete the projectile from the scene since it’s now saved as a prefab, then drag that prefab from assets to the ‘projectile’ reference in the inspector of the enemy object.

@OncaLupe

Thank you very much OncaLupe! You made my day!
I just could not find this even after some hours. Sometimes its hard to code if your in fact an artist! :smiley: