实例化移动的原始对象

时间:2019-01-16 20:57:42

标签: unity3d instantiation

我确定这是一个简单的修复程序,但是我是Unity的新手,我无法弄清楚。当它掉落并与屏幕底部碰撞时,我有一个球,它将在屏幕上随机创建另一个球。此过程将一直持续到屏幕上显示指定的最大球数为止。它基本上可以正常工作,但是当第一个球击中底部并生成一个新球时,原始球似乎会在屏幕上的任意位置重新创建或移回。我希望球只是不断弹跳并创建新球。

这是相关代码。

void OnTriggerEnter2D (Collider2D collision)
{

    if (collision.gameObject.name == "tile" && balls < maxBalls )
     {
        balls = balls + 1;
        randomX = Random.Range(-3, 4);
        randomY = Random.Range(-3, 4);
        transform.position = new Vector3(randomX, randomY, transform.position.z);
        Instantiate(ball, transform.position, transform.rotation);
        NumberofBalls();

     }


}

1 个答案:

答案 0 :(得分:0)

它移动原始球的原因是因为以下这一行:

transform.position = new Vector3(randomX, randomY, transform.position.z);

这将设置当前对象的位置。

如果只想在随机位置生成新对象,则应执行以下操作:

void OnTriggerEnter2D (Collider2D collision)
{
    if (collision.gameObject.name == "tile" && balls < maxBalls )
    {
        balls = balls + 1;
        randomX = Random.Range(-3, 4);
        randomY = Random.Range(-3, 4);
        Vector3 newPosition = new Vector3(randomX, randomY, transform.position.z);
        Instantiate(ball, newPosition, transform.rotation);
        NumberofBalls();
    }
}

working- first ball

not working - missing game object (should point to prefab)

相关问题