好的,标题可能会令人困惑,因为我不知道怎么说。
我的情况:我有一个带有4个子对象的2d子画面,每个子画面围绕该子画面一个周边。所以看起来像这样:
Spawner2具有使用以下方法的脚本,该脚本在游戏开始时被调用。在脚本中,我实例化了一个新的预制件:
public void GenerateBox(int count)
{
...
GameObject spawnedRoom = Instantiate(possibleRooms[chosen], transform.position, Quaterion.identity);
}
但这将实例化Spawner1位置上的对象。
所以我尝试调试。我从其父级中拉出Spawner2并查看了位置(X:1.0062,Y:-0.0038)。我把它放回2D精灵中,当我调试它的位置时,它给了我X:0,Y:1,Z:-9.8。
是因为我的预制件吗?有什么问题,我该如何解决?
答案 0 :(得分:1)
请改用此重载方法:
Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);
并将Spawner2父变换作为最后一个参数传递。现在,新对象应与Spawner2放在同一位置。最后,您的函数应如下所示:
public void GenerateBox(int count)
{
...
GameObject spawnedRoom = Instantiate(possibleRooms[chosen], transform.position, Quaterion.identity, transform.parent);
}
答案 1 :(得分:1)
编辑:我开始了一个新项目,并做了完全相同的事情,除了现在,预制位置在所有轴上都设置为0。现在一切正常。我猜这是由于预制件的位置而发生的。例如,您在脚本中的世界位置(0,0,0)处实例化预制件,并且预制位置为(2,1,0),然后该预制件将在世界位置(2,1,0)生成。这是位置+预制位置。