How do I get the global position

I have a prefab called Section1 that is organized like this:

  • I am instantiating this prefab twice
    in 2 different locations.
  • Now I am
    printing the positions of the Child
    “O1” for both instances and I get the
    same location.
  • Why is that? How do I get their absolute global position?

This is my code:

var prefab:GameObject;
function Start () {
	var instance1:GameObject = Instantiate(prefab, Vector3(0.0f, 0.0f, 0.0f), transform.rotation);
	var instance2:GameObject = Instantiate(prefab, Vector3(0.0f, 0.0f, 20.0f), transform.rotation);
	var pos1:Vector3 = instance1.Find("O1").transform.position;
	var pos2:Vector3 = instance2.Find("O1").transform.position;

And this is the output:


Both Dave and valorik were right.
valorik said that GameObject.Find() does a global search and everytime I was doing it I was getting the same object;
Dave suggested I should use instance.transform.Find("O1").transform.position , but that would give me a nullrefference error. I managed to fix that error by using this code:


I’m not really sure who to give the credit to.
If Dave updates his answer to the code I mention above I will accept his.
Thank you very much for your help.

var pos1:Vector3 = instance1.Find(“O1”).transform.position;
var pos2:Vector3 = instance2.Find(“O1”).transform.position;

I’m not sure about this… because if i remember correctly, find works globaly, so you are getting two times the same object… try name them in a different way.


I think you want to Find off the transform, not the Gameobject:

Try this:

var pos1:Vector3 = instance1.transform.Find(“O1”).transform.position;