【问题标题】:Unity3D: Spawning an object based on current position - putting onto canvas in same positionUnity3D:根据当前位置生成对象 - 放置在同一位置的画布上
【发布时间】:2015-10-04 05:25:14
【问题描述】:

我有一个对象,当它被销毁时会留下一些东西。

//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
  • 我想将它设置为画布,因为它打算用作 UI 元素
  • 如果我不设置父对象,则对象最终位于正确的位置(但如果我不设置父对象,UI 元素将无法按预期工作)。
  • 我希望能得到一些帮助来解决这个问题。我不想这么说,但我觉得解决方案很简单,我无法理解 =(

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

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

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

    当您设置父级时,您的 bonusDrop GameObject 变换变为父级 GameObject 变换的本地。

    这意味着 bonusDrop 的变换将父变换视为原点。

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

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

    【讨论】:

    • 您好,感谢您的回复!我首先尝试了 False 设置来保持位置。唯一的事情是一旦我这样做,它似乎现在在其原始位置生成预制件(即它在游戏场景中的位置)。然后我将其设置为 True 并且没有运气。是否可能导致我的物品掉落是一个 UI 按钮? (基本上我希望 droppable 是一个与之交互的按钮)。
    • 那么通过这样做,它会在正确的位置生成预制件吗?我可能对您尝试做的事情感到有些困惑。您是否尝试过事先创建按钮并将其停用。然后在运行时当你的对象被销毁时让它激活按钮并将其移动到正确的位置?
    • 对不起,我不清楚。基本上我正在尝试生成一个 UI 元素,它在敌人死亡时充当拾取物。目前它是一个 UI 元素按钮,当它生成时,它会在每次实例化(生成)时进入屏幕的左下角。相反,我希望它在敌人死亡的地方生成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多