如何在代码 Unity 中复制游戏对象

问题描述 投票:0回答:2

我想复制名为“Damaged”的游戏对象。

我希望它有确切的名字、位置并且是游戏对象 Boss 下的孩子。整个想法是,每次我调用一个函数时,都应该创建一个游戏对象,它有一个带有单个动画的动画师,然后在播放动画时,有一个事件会破坏该游戏对象。我尝试了明显的 Instance 解决方案,我得到了父类之外的对象。:

GameObject duplicate = Instantiate(damageText, transform.position, transform.rotation);
animator.SetTrigger("Damage");

总的来说,我需要帮助将新创建的游戏对象作为子对象移动到 Boss 对象下并触发该游戏对象的动画。我试着搜索它,但我找不到任何东西。

unity3d gameobject
2个回答
0
投票

如果您更改 Instanciate 以添加父变换,它应该可以工作,instanciate 可以将父变换作为参数,只需像这样在之后添加它:

GameObject duplicate = Instantiate(damageText, transform.position, transform.rotation, "parent transform here");
animator.SetTrigger("Damage");

如果你想获得父级转换,你可以找到它的名字像这样:

Transform bossTransform = GameObject.Find("name").tranform;
或者你可以将它作为一个公共组件添加到你的脚本中:
public Transform bossTransform;


0
投票

创建后直接设置parent,运行动画师的Trigger。

GameObject duplicate = Instantiate(damageText, transform.position, transform.rotation, transform.parent);
animator.SetTrigger("Damage");

duplicate.GetComponent<Animator>().SetTrigger("Damage");
© www.soinside.com 2019 - 2024. All rights reserved.