Пример #1
0
    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);
    }
Пример #3
0
    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);
        }
    }