从 Unity 中的另一个脚本访问对象的位置

Sam*_*Sam 3 c# unity-game-engine

我正在制作一个同时有球和球员的游戏。到目前为止,我为球制作了一个球体,并为玩家制作了一个正方形(模型将在稍后制作)。我为玩家附加了一个运动脚本,以便它可以向各个方向移动,但我希望他在碰到球时能够捡起球。为此,我假设在球脚本中,在碰撞函数中,我必须将其位置更改为玩家的位置。所以我想知道:从球脚本访问玩家坐标的正确方法是什么?

Kay*_*Kay 5

我希望我理解你正确。为了得到你会做的位置:

GameObject player = GameObject.Find ("Player");
Transform playerTransform = player.transform;
// get player position
Vector3 position = playerTransform.position;
Run Code Online (Sandbox Code Playgroud)

但是要捡起并带走球,您应该做育儿:

// ...
transform.parent = playerTransform;
// take care to disable physics while ball is under control of the player
rigidbody.isKinematic = true;
Run Code Online (Sandbox Code Playgroud)

这样你就不必在每次更新或固定更新时自己移动球了。如果玩家稍后丢球,只需设置球的transform.parent = null和即可反转isKinematic = false