OnCollisionEnter2D
我已将print("ball hit ground");
添加到活动中。
但是如果我想要连续下雨的球,摧毁那个撞到地面并产生新球的球?我不希望它是一样的,因为我随着时间的推移想要为球的雨添加强度。
我在我的球剧中得到了这个:
void OnCollisionEnter2D (Collision2D collisionInfo)
{
GameObject newBall = Instantiate(Ball) as GameObject;
print ("collision!");
Destroy(this);
}
然而,这将挂起整个Unity,因为它将在与当前球相同的位置创建一个球,迫使它立即发生碰撞并产生大量球:D
我想要发生的事情是当一个球击中地面时,它应该被摧毁并创造一个新的球落地。销毁功能原样,什么也不做......不应该删除球吗?
答案 0 :(得分:2)
实例化函数可以带三个参数;生成,定位和旋转的游戏对象。
你可以尝试一下
实例化(球,新的Vector3(〜把你自己的x,y,z放在这里〜),Quaternion.identity);
这将在你放入vector3的任何位置创建球。如果您只对游戏对象进行实例化而没有其他参数,则会在脚本所在的对象上创建它。 Quaternion.identity只是默认轮换。
关于删除功能,您可以尝试
DestroyObject(this.gameObject);
会破坏单词中的游戏对象。
如果您需要更多帮助,请测试一下并回复我!
答案 1 :(得分:0)
实例化允许您设置对象的生成位置。看看this documentation。因为你正在使用2d我想象它需要一个Vector2(不确定,从未尝试过用2D游戏实例化),以及旋转(如果你打算让它以不同的角度旋转)。