首页 > 解决方案 > 实例化移动的原始对象

问题描述

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

     }


}

标签: unity3dinstantiation

解决方案


它移动原始球的原因是因为这条线:

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();
    }
}

工作-第一个球

不工作 - 缺少游戏对象(应该指向预制)


推荐阅读