Как исправить клонирование слишком большого количества экземпляров за раз вместо одного? - PullRequest
1 голос
/ 23 июня 2019

Я играю в игру, похожую на змею, и когда я ем врага, я создаю новый клон префаба. Вместо того, чтобы создавать только один клон после основного префаба, после того как я съел первого врага и у меня есть префаб и один клон, когда я ем второго врага, игра создает клон префаба И клон клона.

Я действительно не понимаю, почему это происходит, это короткий код, и я не могу найти никаких ошибок. Единственная идея, которая у меня есть, заключается в том, что, возможно, этот скрипт работает для каждого клона, а не только для игрока, как и должно быть.

private void createNewPiece()
{
    if(playerPieces.Count!=0)///which is the number of clones, not counting the player
        clone = Instantiate(player, playerPieces[playerPieces.Count-1].transform.position, Quaternion.identity);
    else
        clone = Instantiate(player, lastPlayerPosition, Quaternion.identity);

    playerPieces.Add(clone);

    addedNewPiece = true;
}
private void movePlayerPieces()
{
    if (addedNewPiece == false)
    {
        for (int i = playerPieces.Count - 1; i >= 1; i -= 1)
        {
            if (playerPieces[i] != null)
                playerPieces[i].transform.position = playerPieces[i - 1].transform.position;

            else Debug.Log("uhmm" + i);

        }

        if (playerPieces.Count >= 1 && playerPieces[0] != null)
            playerPieces[0].transform.position = lastPlayerPosition;
    }
    else
    {
        for (int i = playerPieces.Count - 2; i >= 1; i -= 1)
        {
            if (playerPieces[i] != null)
                playerPieces[i].transform.position = playerPieces[i - 1].transform.position;

            else Debug.Log("uhmm" + i);

        }

        if (playerPieces.Count >= 2 && playerPieces[0] != null)
            playerPieces[0].transform.position = lastPlayerPosition;
    }


}

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

1 Ответ

1 голос
/ 23 июня 2019

Ваша змея состоит из клонов префаба игрока, поэтому у каждой части есть этот скрипт.Это означает, что новый хвостовой сегмент будет порождать другого клона рядом с головой.

Попробуйте создать PlayerHead GameObject с этим сценарием и PlayerBody GameObject без этого сценария для клонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...