Unity3D:根据当前位置生成对象 – 在同一位置放置到canvas上

我有一个物体,当它被摧毁时会留下一些东西。

//Spawn object at point GameObject bonusDrop = (GameObject)Instantiate(bonusItem,target.transform.position, Quaternion.identity); //Set the transform to the canvas (without this line the position is correct) bonusDrop.transform.SetParent(canvas.transform); //object is completely off 
  • 我想将它设置为canvas,因为它是作为UI元素
  • 如果我没有设置父对象,则对象最终处于正确的位置(但如果我没有设置父对象,则UI元素将无法按预期工作)。
  • 我希望能帮助你解决这个问题。 我不想这么说,但我觉得解决方案很简单,我无法得到它=(

请查看: http : //docs.unity3d.com/ScriptReference/Transform.SetParent.html

你遇到了世界空间与局部空间的问题。 在设置其父级之前,您的GameObject bonusDrop存在于全局空间中,这意味着其变换基于(0,0)的全局原点。

设置父级时,您的bonusDrop GameObject变换将变为父GameObject变换的局部变换。

这意味着bonusDrop的转换正在寻找父母转换作为起源。

函数SetParent()有第二个参数可以帮助您解决这个问题。

如果您仍有问题,请告诉我。