实例化移动原始对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实例化移动原始对象相关的知识,希望对你有一定的参考价值。

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

     }


}
答案

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

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)

以上是关于实例化移动原始对象的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

NPE,同时访问实例化和构造函数配置的不可变对象的原始类型(双精度)。 (不涉及自动装箱或反射)

片段事务中的实例化错误

使用在同一命名空间中定义的构造函数实例化命名空间中的对象。 C++

使用带有移动对象的 OpenGL 实例化绘图

相机移动时实例化游戏对象