How can I have an access to the rigidbody component of each instantiated object?

In Game Controller script, I have instantiated a stream of balls falling from top of the screen. I stored the references to these instantiated objects in a list whereby I can access it using listname[index]. .How can I have an access to the rigidbody component of each instantiated object?
Here is my script. Where should I add the rigid body codes to access the rigid body components of the spawned objects. Here I have limited the action to setactive (false) of the list elements. What I wanted is to change the velocity of list elements.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ballmove : MonoBehaviour 
{
	public GameObject enemy;
	public Vector3 spawnPosition; 
	public float spawnWait;
	public float startWait;
	public bool stop;
	int i;
	List<GameObject> abc;

	void Start () 
	{
		int i = 0;
		StartCoroutine (waitSpawner ());
		abc = new List<GameObject> ();
		
	}
	
	void Update () 
	{
		if (Input.GetKeyDown (KeyCode.RightArrow))
		{
			abc *.SetActive (false);*
  •  	i++;*
    
  •  }*
    
  • }*

  • IEnumerator waitSpawner ()*

  • {*

  •  yield return new WaitForSeconds (startWait);* 
    
  •  while (!stop)* 
    
  •  {*
    
  •  	GameObject thisobject = Instantiate (enemy, spawnPosition, gameObject.transform.rotation) as GameObject;* 
    
  •  	abc.Add (thisobject);*
    

yield return new WaitForSeconds (spawnWait);

  •  }*
    
  • }*
    }

1 Answer

1

You could reference the rigidbodies directly in a list rather than referencing the gameobjects. You can then even directly reference the prefab’s rigidbody:

public Rigidbody enemy;
List<Rigidbody> rigidbodies;

and

Rigidbody thisobject = Instantiate (enemy, spawnPosition, gameObject.transform.rotation) as Rigidbody; 
rigidbodies.Add(thisobject);

You can then access a list item rigidbody’s gameobject easily:

rigidbodies*.gameObject.SetActive(false);*

I think this is nicer than many other ways you could do this - which includes using GetComponent on your gameobjects every time you want its rigidbody, or storing both the gameobject and its rigidbody in a struct that is saved in a list.