实例化移动原始对象

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

我确信这是一个简单的修复,但我在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();

     }


}
unity3d instantiation
1个回答
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)

© www.soinside.com 2019 - 2024. All rights reserved.