J'utilise une coroutine pour utiliser une fonction qui génère des arbre, le problème est qu’après 2 arbre j’obtiens cette erreur:
et voici le code:IndexOutOfRangeException: Array index is out of range.
PlanetGenerator+<GenerateTree>c__Iterator3.MoveNext () (at Assets/Scripts/PlanetGenerator.cs:281)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
Code : Tout sélectionner
private IEnumerator GenerateTree(Vector3 sCoord, int[,] coordTop)
{
int[] pos = new int[2] { 2, 2 };
for (int i = 0; i < sliderPSize.value - 4; i++)
{
for (int j = 0; j < sliderPSize.value - 4; j++)
{
if (pos[1] < sliderPSize.value - 4)
{
Debug.Log("pos[0]: " + pos[0] + " | coordTop[pos[i], pos[j]: " + coordTop[pos[i], pos[j]] + " | pos[1]: " + pos[1] + " | i: " + i + " | j:" + j);
TreeGenerator(new Vector3(pos[0] + sCoord.x, coordTop[pos[i], pos[j]] + sliderPSize.value + sCoord.y + 1, pos[1] + sCoord.z));
pos[0] += Random.Range(4, 9);
if (pos[0] > sliderPSize.value - 4)
{
pos[0] = Random.Range(2, 5);
pos[1] += Random.Range(4, 9);
}
}
Debug.Log("pos[0]: " + pos[0] + " | coordTop[pos[i], pos[j]: " + coordTop[pos[i], pos[j]] + " | pos[1]: " + pos[1] + " | i: " + i + " | j:" + j);
yield return new WaitForSeconds(0.01f);
}
}
}
Pour les valeur des variables:
float sliderPSize = 20 (Même en augmentant celle si sa change rien)
Vector3 SCoord = (0, 0, 0)
int[,] coordTop[(int)sliderPSize.value - 2, (int)sliderPSize.value - 2]
Merci d'avance pour votre aide