Создание движущегося исходного объекта - PullRequest
0 голосов
/ 16 января 2019

Я уверен, что это простое исправление, но я очень новичок в 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 голосов
/ 17 января 2019

Причина, по которой он перемещает оригинальный шар, заключается в следующей строке:

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)

...