我正在做类似蛇的游戏,当我吃掉一个敌人时,我会创建一个新的预制件克隆。在我吃掉第一个敌人并拥有一个预制件和一个克隆之后,不是在主要的预制件之后只创建一个克隆,而是在我吃了第二个敌人之后,游戏创建了预制件的克隆和克隆的克隆。
我真的不明白为什么会发生,这是一个简短的代码,我找不到任何错误。我唯一的想法是,也许该脚本适用于每个克隆,而不仅仅是播放器。
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;
}
}
我吃掉的敌人越多,下一个被吃掉的敌人就会创造出更多的克隆体,而不是每次都只创造一个。
答案 0 :(得分:1)
您的蛇是由播放器预制件的克隆制成的,因此每个部分都有此脚本。 这意味着新的尾段还将在头部旁边生成另一个克隆。
尝试使用此脚本制作一个PlayerHead GameObject,并在不使用此脚本的情况下制作一个PlayerBody GameObject。