我正在尝试将对象(A)实例化为画布的子级。 A的位置是使用B对象的位置设置的,也是Canvas的子级。
不确定这对我的问题是否有用,但A和B都有孩子。
当我产生A时,它的位置根本不是B的位置,即使我的debug.log()
这样说。
这就是我所拥有的:
以下是调试说的内容:
以下是代码:
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会使其更糟糕。
我的问题是:我缺少什么,我不理解什么?我之前从未遇到过这个问题。
答案 0 :(得分:3)
您正在设置变换的localPosition
,这会将其设置为相对于其父项,但您将其设置为不相关的对象的localPosition而不是其全局位置(transform.position
),这将结束不正确。在这种情况下,您可以将父级的世界位置与其他对象的世界位置进行比较,如此
Vector3 thePos = this.transform.parent.position - GameObject.Find("Player_Objects").transform.position;
然后,您可以使用此新localPosition
Vector3
this.transform.localPosition = thePos;