Esempio n. 1
0
    private void CreateObstacle(ref ObstaclePositionType obstaclePositionType)
    {
        var        obstacleTypeCount  = Enum.GetNames(typeof(ObstacleType)).Length;
        var        randomObstacleType = (ObstacleType)Random.Range(0, obstacleTypeCount);
        ObjectPool obstaclePool       = null;

        if (randomObstacleType == ObstacleType.Pipe)
        {
            obstaclePool = RoadManager.Instance.pipeObstaclePool;
        }
        else
        {
            if (GameManager.Instance.levelStarted)
            {
                obstaclePool = RoadManager.Instance.airObstaclePool;
            }
        }

        if (obstaclePool != null)
        {
            var obstacle = obstaclePool.PopObject().GetComponent <Obstacle>();

            var obstaclePositionCount = Enum.GetNames(typeof(ObstaclePositionType)).Length;
            obstaclePositionType = (ObstaclePositionType)Random.Range(0, obstaclePositionCount);

            obstacle.gameObject.SetActive(true);
            obstacle.Setup(this, obstaclePositionType);
            _obstacle = obstacle;
        }
    }
Esempio n. 2
0
    public override void Setup(Pipe pipe, ObstaclePositionType positionType)
    {
        transform.SetParent(pipe.transform);

        var obstaclePosition = Vector3.zero;

        if (positionType == ObstaclePositionType.Bottom)
        {
            obstaclePosition.y = pipe.meshRenderer.bounds.min.y + 2.5f;
        }
        else
        {
            obstaclePosition.y = pipe.meshRenderer.bounds.max.y - 2.5f;
        }

        transform.position = obstaclePosition;
    }
Esempio n. 3
0
    private void CreatePieces(bool hasObstacle, ObstaclePositionType obstaclePositionType)
    {
        var startPositionOffset = 2.5f;
        var endPositionOffset   = 2.5f;

        if (hasObstacle)
        {
            switch (obstaclePositionType)
            {
            case ObstaclePositionType.Bottom:
                startPositionOffset = 4.0f;
                break;

            case ObstaclePositionType.Top:
                endPositionOffset = 4.0f;
                break;
            }
        }

        var startPosition = meshRenderer.bounds.min.y + startPositionOffset;
        var endPosition   = meshRenderer.bounds.max.y - endPositionOffset;

        var length = endPosition - startPosition;

        var meshY = RoadManager.Instance.pieceData.Bounds.y;

        var count = (int)(length / meshY);

        // var distance = length / count;

        for (var i = 0; i < count; i++)
        {
            var pieceHolder = RoadManager.Instance.pieceHolderPool.PopObject().GetComponent <PieceHolder>();
            var pos         = Vector3.zero;
            pos.y = startPosition + (i * meshY);
            pieceHolder.Setup(this, pos);
            _pieceHolders.Add(pieceHolder);
        }
    }
Esempio n. 4
0
    public override void Setup(Pipe pipe, ObstaclePositionType positionType)
    {
        var obstaclePosition = Vector3.zero;

        if (positionType == ObstaclePositionType.Bottom)
        {
            obstaclePosition.y = pipe.meshRenderer.bounds.min.y + 2.5f;
        }
        else
        {
            obstaclePosition.y = pipe.meshRenderer.bounds.max.y - 2.5f;
        }

        var scale = Vector3.zero;

        scale.x = pipe.transform.lossyScale.x + 0.5f;
        scale.y = 0.5f;
        scale.z = pipe.transform.lossyScale.z + 0.5f;

        transform.position   = obstaclePosition;
        transform.localScale = scale;

        transform.SetParent(pipe.transform);
    }
Esempio n. 5
0
 public abstract void Setup(Pipe pipe, ObstaclePositionType positionType);