Есть игра, что-то вроде симулятора инвокера, где при нажатии на одну из трёх кнопок (z, x, c) спавнится соответствующая кнопке сфера в одной из незанятых точек, всего точек три, а по нажатию на пробел игрок стреляет (пока просто удаляются все сферы. И с этим я ещё разобрался, но проблема в том, что персонаж постоянно двигается, и сферы спавнить нужно рядом с ним. Я перемещаю их в координаты родителя (пустого дочернего игроку объекта) + заданный вектор из массива, соответствующий нужной мне позиции, но вот в чём загвоздка, сначала три сферы появляются рядом с местом, в котором был игрок во время предыдущего спавна сфер, и только на второй раз появляются там, где нужно. Я в принципе не понимаю, как так могло случиться.
Вот код:
[SerializeField] GameObject fireSphere;
[SerializeField] GameObject iceSphere;
[SerializeField] GameObject sparkleSphere;
[SerializeField] GameObject parent;
[SerializeField] Vector3[] sphereCoords;
public static bool shootButtonPressed = false;
public static byte sphereCounter = 0;
private void Update()
{
if ((Input.GetKeyDown(KeyCode.Z)) & (sphereCounter < 3))
{
sphereCounter += 1;
Instantiate(fireSphere).transform.SetParent(parent.transform, true);
if (sphereCounter == 1)
{
fireSphere.transform.position = parent.transform.position + sphereCoords[0];
}
else if (sphereCounter == 2)
{
fireSphere.transform.position = parent.transform.position + sphereCoords[1];
}
else if (sphereCounter == 3)
{
fireSphere.transform.position = parent.transform.position + sphereCoords[2];
}
else
{
Debug.Log("Многовато сфер");
}
}
if ((Input.GetKeyDown(KeyCode.X)) & (sphereCounter < 3))
{
sphereCounter += 1;
Instantiate(iceSphere).transform.SetParent(parent.transform, true);
if (sphereCounter == 1)
{
iceSphere.transform.position = parent.transform.position + sphereCoords[0];
}
else if (sphereCounter == 2)
{
iceSphere.transform.position = parent.transform.position + sphereCoords[1];
}
else if (sphereCounter == 3)
{
iceSphere.transform.position = parent.transform.position + sphereCoords[2];
}
else
{
Debug.Log("Многовато сфер");
}
}
if ((Input.GetKeyDown(KeyCode.C)) & (sphereCounter < 3))
{
sphereCounter += 1;
Instantiate(sparkleSphere).transform.SetParent(parent.transform, true);
if (sphereCounter == 1)
{
sparkleSphere.transform.position = parent.transform.position + sphereCoords[0];
}
else if (sphereCounter == 2)
{
sparkleSphere.transform.position = parent.transform.position + sphereCoords[1];
}
else if (sphereCounter == 3)
{
sparkleSphere.transform.position = parent.transform.position + sphereCoords[2];
}
else
{
Debug.Log("Многовато сфер");
}
}
}