Accessing objects position from another script in Unity

Go To


I'm making a game with both a ball and a player. So far I made a sphere for the ball and a square (models will be made later) for the player. I attached a movement script to the player so that it can go in all directions, but I want him to be able to pick up the ball when he runs into it. To do this, I'm assuming that in the ball script, within a collision function, I would have to change it's position to the position of the player. So I'm wondering: what is the correct way of accessing those coordinates of the player from the ball script?

2012-04-03 22:55
by Sam


I hope I understood you right. To just get the position you would do:

GameObject player = GameObject.Find ("Player");
Transform playerTransform = player.transform;
// get player position
Vector3 position = playerTransform.position;

But to pick up and carry away the ball you should rather do parenting:

// ...
transform.parent = playerTransform;
// take care to disable physics while ball is under control of the player
rigidbody.isKinematic = true;

This way you don's have to care about moving the ball by yourself every Update or FixedUpdate. If the player looses the ball later on, just reverse is by setting the ball's transform.parent = null and isKinematic = false.

2012-04-04 21:40
by Kay