- Home /
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 [i].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);
}
}
}
Answer by FlaSh-G · Nov 01, 2017 at 10:49 AM
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[i].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.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
[SOLVED]Adding and manipulating rigid bodies for more than one object via a script. 1 Answer
how can i make a List of rigidbody 1 Answer
c# reference site? need help figuring out storing rigidbodies into List<> 3 Answers
i do not know why gravity is not working on rigidbody sphere. 1 Answer