如何创建新对象并将其添加到场景中?

时间:2014-03-20 12:33:48

标签: unity3d 2d

我把球倒在了地上。在OnCollisionEnter2D我已将print("ball hit ground");添加到活动中。

但是如果我想要连续下雨的球,摧毁那个撞到地面并产生新球的球?我不希望它是一样的,因为我随着时间的推移想要为球的雨添加强度。

我在我的球剧中得到了这个:

void OnCollisionEnter2D (Collision2D collisionInfo) 
{
    GameObject newBall = Instantiate(Ball) as GameObject;

    print ("collision!");
    Destroy(this);
}

然而,这将挂起整个Unity,因为它将在与当前球相同的位置创建一个球,迫使它立即发生碰撞并产生大量球:D

我想要发生的事情是当一个球击中地面时,它应该被摧毁并创造一个新的球落地。销毁功能原样,什么也不做......不应该删除球吗?

2 个答案:

答案 0 :(得分:2)

实例化函数可以带三个参数;生成,定位和旋转的游戏对象。

你可以尝试一下

  

实例化(球,新的Vector3(〜把你自己的x,y,z放在这里〜),Quaternion.identity);

这将在你放入vector3的任何位置创建球。如果您只对游戏对象进行实例化而没有其他参数,则会在脚本所在的对象上创建它。 Quaternion.identity只是默认轮换。

关于删除功能,您可以尝试

  

DestroyObject(this.gameObject);

会破坏单词中的游戏对象。

如果您需要更多帮助,请测试一下并回复我!

答案 1 :(得分:0)

实例化允许您设置对象的生成位置。看看this documentation。因为你正在使用2d我想象它需要一个Vector2(不确定,从未尝试过用2D游戏实例化),以及旋转(如果你打算让它以不同的角度旋转)。