Unity3d了解定位系统

时间:2016-10-28 09:38:58

标签: c# unity3d

我正在尝试将对象(A)实例化为画布的子级。 A的位置是使用B对象的位置设置的,也是Canvas的子级。

不确定这对我的问题是否有用,但A和B都有孩子。

当我产生A时,它的位置根本不是B的位置,即使我的debug.log()这样说。

这就是我所拥有的:

http://prntscr.com/czz084

以下是调试说的内容:

http://prntscr.com/czz0dt

以下是代码:

 if (Input.GetButtonDown("Fire1"))
        {
            GameObject Laser_Projectile = Instantiate(Resources.Load("Sprites/Object_Laser_Projectile") as GameObject);
            Laser_Projectile.transform.SetParent(GameObject.Find("Canvas").transform, false);
            this.transform.localPosition = GameObject.Find("Player_Objects").transform.localPosition;

我尝试使用position和localPosition,没办法让它工作。 我也尝试使用setParent参数(false或true),但将其设置为true会使其更糟糕。

我的问题是:我缺少什么,我不理解什么?我之前从未遇到过这个问题。

1 个答案:

答案 0 :(得分:3)

您正在设置变换的localPosition,这会将其设置为相对于其父项,但您将其设置为不相关的对象的localPosition而不是其全局位置(transform.position),这将结束不正确。在这种情况下,您可以将父级的世界位置与其他对象的世界位置进行比较,如此

Vector3 thePos = this.transform.parent.position - GameObject.Find("Player_Objects").transform.position;

然后,您可以使用此新localPosition

设置对象的Vector3
this.transform.localPosition = thePos;