private void PrepareArrows(shootTypes shootType) { lastShootType = shootType; float distance = maxRight - maxLeft; float distanceBetweenArrows = distance / 30; bool shootDependingObjective = false; int numberOfArrows = 0; float offset; int j; int random; switch (shootType) { case shootTypes.NEW_SHOOT_TYPE_SMALL: random = Random.Range(-2, 3); for (int i = 0; i < 22; ++i) { if (i < 5) { offset = 0f; j = i; } else if (i < 9) { offset = 7f * distanceBetweenArrows; j = i - 5; } else if (i < 13) { offset = 13 * distanceBetweenArrows; j = i - 9; } else if (i < 17) { offset = 19f * distanceBetweenArrows; j = i - 13; } else { offset = 25f * distanceBetweenArrows; j = i - 17; } arrows[i].gameObject.SetActive(false); arrows[i].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 22].gameObject.SetActive(false); arrows[i + 22].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 2.0f, prepareArrowYPos, 0f); arrows[i + 22].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 44].gameObject.SetActive(false); arrows[i + 44].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 4.0f, prepareArrowYPos, 0f); arrows[i + 44].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.NEW_SHOOT_TYPE_NORMAL: random = Random.Range(-2, 3); for (int i = 0; i < 18; ++i) { if (i < 3) { offset = 0f; j = i; } else if (i < 7) { offset = 6f * distanceBetweenArrows; j = i - 3; } else if (i < 11) { offset = 13 * distanceBetweenArrows; j = i - 7; } else if (i < 15) { offset = 20f * distanceBetweenArrows; j = i - 11; } else { offset = 27f * distanceBetweenArrows; j = i - 15; } arrows[i].gameObject.SetActive(false); arrows[i].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 18].gameObject.SetActive(false); arrows[i + 18].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 2.0f, prepareArrowYPos, 0f); arrows[i + 18].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 36].gameObject.SetActive(false); arrows[i + 36].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 4.0f, prepareArrowYPos, 0f); arrows[i + 36].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.NEW_SHOOT_TYPE_BIG: random = Random.Range(-2, 3); for (int i = 0; i < 14; ++i) { if (i < 2) { offset = 0f; j = i; } else if (i < 5) { offset = 6f * distanceBetweenArrows; j = i - 2; } else if (i < 8) { offset = 13 * distanceBetweenArrows; j = i - 5; } else if (i < 11) { offset = 20f * distanceBetweenArrows; j = i - 8; } else { offset = 27f * distanceBetweenArrows; j = i - 11; } arrows[i].gameObject.SetActive(false); arrows[i].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 14].gameObject.SetActive(false); arrows[i + 14].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 2.0f, prepareArrowYPos, 0f); arrows[i + 14].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; arrows[i + 28].gameObject.SetActive(false); arrows[i + 28].position = new Vector3(maxLeft + random * distanceBetweenArrows + offset + j * distanceBetweenArrows + distanceBetweenArrows / 4.0f, prepareArrowYPos, 0f); arrows[i + 28].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.LEFT_TO_RIGHT: for (int i = 0; i < arrows.Length; ++i) { arrows[i].gameObject.SetActive(false); arrows[i].position = new Vector3(maxLeft + i * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.RIGHT_TO_LEFT: for (int i = 0; i < arrows.Length; ++i) { arrows[i].gameObject.SetActive(false); arrows[i].position = new Vector3(maxRight - i * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.SIDES_TO_MIDDLE: for (int i = 0; i < arrows.Length; ++i) { arrows[i].gameObject.SetActive(false); if (i % 2 == 0) { arrows[i].position = new Vector3(maxRight - i / 2 * distanceBetweenArrows, prepareArrowYPos, 0f); } else { arrows[i].position = new Vector3(maxLeft + (i / 2 + 1) * distanceBetweenArrows, prepareArrowYPos, 0f); } arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.ULTRA_DIFFICULT_ULTRA: for (int i = 0; i < arrows.Length; ++i) { arrows[i].gameObject.SetActive(false); if (i < (arrows.Length / 2)) { arrows[i].position = new Vector3(maxLeft + i * distanceBetweenArrows, prepareArrowYPos, 0f); } else { arrows[i].position = new Vector3(maxRight - (i - arrows.Length / 2 + 0.5f) * distanceBetweenArrows, prepareArrowYPos, 0f); } arrows[i].localEulerAngles = new Vector3(0f, 180f, 0f); arrowsScript[i].canMove = false; } break; case shootTypes.THREE_NEAR_GLITCH: shootDependingObjective = true; numberOfArrows = 3; break; case shootTypes.FIVE_NEAR_GLITCH: shootDependingObjective = true; numberOfArrows = 5; break; case shootTypes.SEVEN_NEAR_GLITCH: shootDependingObjective = true; numberOfArrows = 7; break; case shootTypes.NINE_NEAR_GLITCH: shootDependingObjective = true; numberOfArrows = 9; break; case shootTypes.ELEVEN_NEAR_GLITCH: shootDependingObjective = true; numberOfArrows = 11; break; } if (shootDependingObjective) { for (int i = 0; i < numberOfArrows; ++i) { arrows[i].gameObject.SetActive(false); if (i % 2 == 0) { arrows[i].position = new Vector3(objectiveTransform.position.x - (i / 2) * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i + numberOfArrows].position = new Vector3(objectiveTransform.position.x - (i / 2) * distanceBetweenArrows + distanceBetweenArrows / 2f, prepareArrowYPos + 1f, 0f); arrows[i + numberOfArrows * 2].position = new Vector3(objectiveTransform.position.x - (i / 2) * distanceBetweenArrows, prepareArrowYPos + 2f, 0f); } else { arrows[i].position = new Vector3(objectiveTransform.position.x + (i / 2 + 1) * distanceBetweenArrows, prepareArrowYPos, 0f); arrows[i + numberOfArrows].position = new Vector3(objectiveTransform.position.x + (i / 2 + 1) * distanceBetweenArrows + distanceBetweenArrows / 2f, prepareArrowYPos + 1f, 0f); arrows[i + numberOfArrows * 2].position = new Vector3(objectiveTransform.position.x + (i / 2 + 1) * distanceBetweenArrows, prepareArrowYPos + 2f, 0f); } arrows[i].rotation = new Quaternion(0f, 0f, 0f, 0f); arrowsScript[i].canMove = false; } for (int i = numberOfArrows; i < arrows.Length; ++i) { arrows[i].gameObject.SetActive(false); arrowsScript[i].canMove = false; } } }