示例#1
0
    public GameObject InstantiatePathThreePointsVertical(Vector3 position, Quaternion rotation, int difficulty, bool activate)
    {
        float pointsSpacingMin = 2f;
        float pointsSpacingMax = 8f;


        float pointsSpacing = Random.Range(pointsSpacingMin, pointsSpacingMax);

        GameObject newBarrel = Instantiate(barrelPF, position, rotation) as GameObject;

        Barrel barrelScript = newBarrel.GetComponent <Barrel>();

        PathMoveBehaviour pathScript = newBarrel.AddComponent <PathMoveBehaviour>();

        pathScript.initialAngle = 0f;


        pathScript.moveDuration      = DifficultyManager.MoveDurationBasedOnDifficulty();
        pathScript.delayBetweenMoves = DifficultyManager.DelayBetweenMovesBasedOnDifficulty();

        int firstMoveDirection = Random.value > 0.5f ? 1 : -1;

        pathScript.pathPoints.Add(new Vector3(position.x, position.y, position.z));

        bool firstPositionIsCentralPoint = Random.value > 0.5f;

        if (firstPositionIsCentralPoint)
        {
            pathScript.backAndForth = false; //it will be virtually back and forth because of the path points
            pathScript.pathPoints.Add(new Vector3(position.x, position.y + pointsSpacing * firstMoveDirection, position.z));
            pathScript.pathPoints.Add(new Vector3(position.x, position.y, position.z));
            pathScript.pathPoints.Add(new Vector3(position.x, position.y + pointsSpacing * -firstMoveDirection, position.z));
        }
        else
        {
            pathScript.backAndForth = true;
            pathScript.pathPoints.Add(new Vector3(position.x, position.y + pointsSpacing * firstMoveDirection, position.z));
            pathScript.pathPoints.Add(new Vector3(position.x, position.y + pointsSpacing * firstMoveDirection * 2, position.z));
        }


        barrelScript.NextBarrelPosition = () =>
        {
            float nextBarrelRelativeXRange = Random.Range(5, 15);
            float nextBarrelY = pathScript.pathPoints[Random.Range(0, pathScript.pathPoints.Count)].y;

            return(new Vector3(position.x + nextBarrelRelativeXRange, nextBarrelY, 0));
        };

        if (activate)
        {
            pathScript.Activate();
        }

        return(newBarrel);
    }
示例#2
0
    public GameObject InstantiatePathSwingVertical(Vector3 position, Quaternion rotation, int difficulty, bool activate)
    {
        float pointsSpacingMin = 3f;
        float pointsSpacingMax = 15f;

        float pointsSpacing = Random.Range(pointsSpacingMin, pointsSpacingMax);

        GameObject newBarrel = Instantiate(barrelPF, position, rotation) as GameObject;

        Barrel barrelScript = newBarrel.GetComponent <Barrel>();

        PathMoveBehaviour pathScript = newBarrel.AddComponent <PathMoveBehaviour>();

        pathScript.initialAngle = 0f;

        pathScript.delayBetweenMoves = 0f;
        pathScript.moveDuration      = DifficultyManager.MoveDurationBasedOnDifficulty();

        pathScript.pathPoints.Add(new Vector3(position.x, position.y, position.z));
        pathScript.pathPoints.Add(new Vector3(position.x, position.y + pointsSpacing * (Random.value > 0.5f? 1: -1), position.z));

        barrelScript.NextBarrelPosition = () =>
        {
            float nextBarrelRelativeXRange = Random.Range(5, 15);
            float nextBarrelY = pathScript.pathPoints[Random.Range(0, pathScript.pathPoints.Count)].y;

            return(new Vector3(position.x + nextBarrelRelativeXRange, nextBarrelY, 0));
        };

        if (activate)
        {
            pathScript.Activate();
        }

        return(newBarrel);
    }