public void SpawnMovingObstacle(Vector3 atOrigin, int numberOfObjects) { float speedRand = UnityEngine.Random.Range(1, 2); AbstractObiectController.ComputeTargetPoint(atOrigin, Vector2.up, 0.5f); GameObject newObstacle = Instantiate(mCloneObstacle, atOrigin, mCloneObstacle.transform.rotation); newObstacle.GetComponent <ObstacolController>().SetAndComputeProperties(Vector2.up, newObstacle.transform.position, speedRand, 2); newObstacle.gameObject.tag = "ClonaObstacol"; newObstacle.transform.parent = this.transform.parent; }
public void SpawnMovingObstacle(Vector3 atCameraOrigin, int numberOfObjects) { if (numberOfObjects > 3) { numberOfObjects = 3; } int chosenDirection = UnityEngine.Random.Range(0, mDirections.Length - 1); Vector2 direction = mDirections[chosenDirection]; int[] verticalPosAvailable = { 1, 1, 1 }; int[] horizontalPosAvailable = { 1, 1, 1 }; // daca directia aleasa e pe diagonala, ne asiguram ca obstacolul nu va iesi din ecranul sau if (mDirections[chosenDirection] == new Vector2(1, 1)) { verticalPosAvailable[0] = 0; } else if (direction == new Vector2(1, -1)) { verticalPosAvailable[2] = 0; } else if (direction == new Vector2(-1, -1)) { verticalPosAvailable[2] = 0; } else if (direction == new Vector2(-1, 1)) { verticalPosAvailable[0] = 0; } bool weReverse; // se spawneaza obiectele for (int i = 0; i < numberOfObjects; i++) { if (UnityEngine.Random.Range(0.0f, 1.0f) > 0.5f) { weReverse = true; print(UnityEngine.Random.Range(0f, 1f)); } else { weReverse = false; print(UnityEngine.Random.Range(0f, 1f)); } if (weReverse == true) { direction *= -1; } float speedRand = UnityEngine.Random.Range(1, 2); Vector2 spawnOrigin = WhereToSpawnObstacle(direction, atCameraOrigin, ref horizontalPosAvailable, ref verticalPosAvailable); // !!! Direction must not be normalized AbstractObiectController.ComputeTargetPoint(spawnOrigin, direction.normalized, 2); GameObject newObstacle = Instantiate(mCloneObstacle, spawnOrigin, mCloneObstacle.transform.rotation); newObstacle.GetComponent <ObstacolController>().SetAndComputeProperties(direction, newObstacle.transform.position, speedRand, 2); newObstacle.gameObject.tag = "Obstacol"; if (weReverse == true) { direction *= -1; } } }