private void SpawnTile(int prefabIndex = -1) { //Create obstacle GameObject go; if (prefabIndex == -1) { int rndIndex = 0; bool isValid = false; while (isValid == false) { rndIndex = Random.Range(0, obstaclePrefabs.Length); isValid = checkPrefabValidity(rndIndex); } GameObject pref = obstaclePrefabs[rndIndex]; prefabIndex = rndIndex; } go = Instantiate(obstaclePrefabs[prefabIndex]) as GameObject; ObstacleProperties ob = go.GetComponent <ObstacleProperties>(); prevJump = ob.isJump ? prevJump = 0 : prevJump + 1; lastPrefabIndex = prefabIndex; go.transform.position = spawnPos; spawnPos += ob.newCentre; activeTiles.Add(go); AdjustForTileBug(); }
GameObject ChoosePrefab(GameObject [] prefabs, bool matchPlayerColor) { int randomIndex; GameObject chosenPrefab = null; if (matchPlayerColor == true) { foreach (GameObject prefab in prefabs) { ObstacleProperties newObstacleProperties = prefab.GetComponent <ObstacleProperties> (); if (newObstacleProperties.tileColor == playerController.playerColor) { chosenPrefab = prefab; break; } } } else { randomIndex = Random.Range(0, prefabs.Length); if (gameCtrl.gameLevel == GameLevel.Hard && prefabs.Length < 3) { chosenPrefab = prefabs [0]; } else { chosenPrefab = prefabs [randomIndex]; } } return(chosenPrefab); }
private bool checkPrefabValidity(int index) { if (index == lastPrefabIndex) { return(false); } GameObject tempGo = obstaclePrefabs[index]; ObstacleProperties ob = tempGo.GetComponent <ObstacleProperties>(); if (ob.isJump && prevJump < jumpTileDelay) { return(false); } if (!ob.isJumpable && prevJump == 0) { return(false); } if (ob.difficulty > difficulty) { return(false); } if (spawnPos.y + ob.newCentre.y < groundLevel) { return(false); } // if (spawnPos.y + ob.newCentre.y > maximumHeight) return false; return(true); }
void Replacetile(GameObject [] prefabs, bool matchPlayerColor) { int childrenIndex; childrenIndex = Random.Range(0, Children.Count); ObstacleProperties obstaclePropeties = Children [childrenIndex].GetComponent <ObstacleProperties> (); if (playerController.playerColor != obstaclePropeties.tileColor) { Vector2 tempPosition = Children[childrenIndex].transform.position; replacements = (GameObject)Instantiate(ChoosePrefab(prefabs, matchPlayerColor), tempPosition, Children[childrenIndex].transform.rotation); replacements.transform.parent = Children [childrenIndex].transform.parent; Destroy(Children[childrenIndex].gameObject); Children.RemoveAt(childrenIndex); Children.Add(replacements); } }