void Detect() { if (nowG == 0) { escape(); } memory += 1; stack.Push(nowG, memory); if (memory > 4) { for (int i = 4; i < memory; i++) { if (r.Next(0, 7) < 2) { memory = i; break; } } } int l = gameController.gELen[nowG]; int m; bool b; bool[] visit = new bool[l]; if (memory > 0) { int[] a = new int[memory]; for (int i = 0; i < memory; i++) { a[i] = stack.Pop(memory); } for (int i = memory - 1; i > -1; i--) { stack.Push(a[i], memory); } m = 0; for (int i = 0; i < l; i++) { b = true; for (int j = 0; j < memory; j++) { if (a[j] == gameController.gEdge[nowG][i]) { visit[i] = false; b = false; break; } } if (b) { visit[i] = true; m++; } } } else { m = l; for (int i = 0; i < l; i++) { visit[i] = true; } } b = false; if (m == 0) { b = true; m = l; } int k = r.Next(m); for (int i = 0; i < l; i++) { if (visit[i] || b) { if (k == 0) { nowG = gameController.gEdge[nowG][i]; aimX = gameController.gCordx[nowG]; aimZ = gameController.gCordz[nowG]; if (aimX - transform.position.x > epsilon) { aimRot = 90; } else if (aimX - transform.position.x < -epsilon) { aimRot = -90; } else if (aimZ - transform.position.z > epsilon) { aimRot = 0; } else { aimRot = 180; } return; } k--; } } }