【问题标题】:How can I create new objects and add them to the scene?如何创建新对象并将它们添加到场景中?
【发布时间】:2014-03-20 23:21:54
【问题描述】:

我让一个球落到地上。在OnCollisionEnter2D 上,我已将print("ball hit ground"); 添加到活动中。

但是如果我想要持续不断的球雨,摧毁掉到地上的球并生成一个新球怎么办?我不希望它是一样的,因为随着时间的推移,我想增加球雨的强度。

我的球脚本上有这个:

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

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

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

我想要发生的是当一个球撞到地面时,它应该被摧毁并创造一个新的落下。销毁函数原样,什么都不做……不应该删除球吗?

【问题讨论】:

    标签: unity3d 2d


    【解决方案1】:

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

    你可以尝试一下

    Instantiate(ball, new Vector3(~把你自己的x,y,z放在这里~), Quaternion.identity);

    这将在你放在vector3中的任何位置创建球。如果您只使用游戏对象进行实例化,而没有其他参数,它将在脚本所在的对象点创建。 Quaternion.identity 只是默认旋转。

    至于删除功能你可以试试

    DestroyObject(this.gameObject);

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-09
        • 2019-04-26
        • 2012-09-26
        • 2021-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        相关资源
        最近更新 更多