我试图将关卡实例化到我的游戏中,但当我实例化第一个关卡时,它会在我的刷出位置参考的右侧生成,然后当我删除第一个关卡并在游戏中刷出第二个关卡时,第二个关卡会在第一个关卡的右侧生成。所以基本上我在场景中有一个游戏对象作为位置参考,但是当我实例化新关卡时,它会越来越向右移动。
我如何让它每次在位置参考产卵?
我在游戏开始时以以下方式实例化第一个关卡:
// Start is called before the first frame update
void Start()
{
Instantiate(levels[levelIndex], levelPosition.transform.position, Quaternion.identity);
}
然后当关卡中不再有僵尸时,当前关卡被破坏,下一个以以下方式实例化:
// Update is called once per frame
void Update()
{
zombies = GameObject.FindGameObjectsWithTag("Zombie");
zombieCount = zombies.Length;
if (zombieCount == 0) LoadNewLevel();
}
private void LoadNewLevel()
{
var levelDestroy = GameObject.Find("Level" + level + "(Clone)");
Destroy(levelDestroy);
level++;
levelIndex++;
if (levelIndex < 2) Instantiate(levels[levelIndex], levelPosition.transform.position, Quaternion.identity);
}
我如何让它总是在参考位置生成
在实例化时尝试记录levelPosition.transform.position
,因为这就是它的走向。如果那个位置是正确的,然后检查你实例化的东西,并确保你的对象都在一个正确的位置,说明你的levelPosition值。例如,如果你想让它在x=2时生成,而你在实例化位置和关卡预制件中都使用2作为x,那么你最终得到的总x偏移量为4,这将比你预期的更右。