实例化移动原始对象
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();
}
}
以上是关于实例化移动原始对象的主要内容,如果未能解决你的问题,请参考以下文章
NPE,同时访问实例化和构造函数配置的不可变对象的原始类型(双精度)。 (不涉及自动装箱或反射)