コード例 #1
0
    private void GenerateEnemyOrBarrier(double percent)
    {
        // 0 - barrier
        // 1 - enemy
        var splineResult = roadSpline.Evaluate(percent);
        var position     = splineResult.position;
        var rotation     = splineResult.rotation;
        var randomObject = new System.Random(DateTime.Now.Millisecond);
        var random       = (randomObject.Next() + (int)(position.x * position.z)) % 2;         // 2 is count of aviable entities to spawn

        var entityData = new RoadEntityData();

        entityData.percentAtRoad = (float)percent;

        // if this is barrier
        if (random == 0)
        {
            var randomTypeId = Random.Range(0, barriers.Count);
            entityData.percentAtRoad = (float)percent;
            var barrier     = GenerateBarrier(position, rotation, randomTypeId, entityData);
            var barrierType = barrier.barrierType;
            if (barrierType == BarrierType.Ground_FullRoad)
            {
                for (var i = 0; i < countOfRoads; i++)
                {
                    GenerateRingsOnRoad((float)percent, 3, 10, i);
                }
            }
            else if (barrierType == BarrierType.Flying_FullRoad)
            {
                for (var i = 1; i < 3; i++)
                {
                    GenerateRingsOnRoad((float)percent, 0, 10, i);
                }
            }
        }
        else if (random == 1)
        {
            GenerateEnemy(position, rotation, entityData);
        }
    }
コード例 #2
0
    private void CreateBarrierAtPosition(int barrierId, Vector3 position, Quaternion rotation, RoadEntityData entityData)
    {
        var barrierT = Instantiate(barriers[barrierId]).transform;

        barrierT.position = position;
        barrierT.rotation = rotation;
        barrierT.parent   = barrierHolder;
    }
コード例 #3
0
    private Barrier GenerateBarrier(Vector3 position, Quaternion rotation, int randomTypeId, RoadEntityData entityData)
    {
        var barrier = barriers[randomTypeId].GetComponent <Barrier>();

        if (barrier == null)
        {
            barrier = barriers[randomTypeId].GetComponentInChildren <Barrier>();
            if (barrier == null)
            {
                Debug.LogError("Can't generate barries => Barrier component is null");
                return(null);
            }
        }
        entityData.entityType  = EntityType.Barrier;
        entityData.barrierType = barrier.barrierType;
        switch (barrier.barrierType)
        {
        case BarrierType.Ground_FullRoad:
            CreateBarrierAtPosition(randomTypeId, position, rotation, entityData);
            entityData.roadCount = 1;
            break;

        case BarrierType.Ground_SingePath:
            var random = new System.Random(DateTime.Now.Millisecond);
            var randomBarriersCount = random.Next(0, countOfRoads - 1);
            CreateMultipleBarriersAtPosition(randomTypeId, randomBarriersCount, position, rotation);
            entityData.roadCount = randomBarriersCount;
            break;

        case BarrierType.Flying_FullRoad:
            CreateBarrierAtPosition(randomTypeId, position, rotation, entityData);
            entityData.roadCount = 1;
            break;

        case BarrierType.Flying_SinglePath:
            var randomF = new System.Random(DateTime.Now.Millisecond);
            var randomBarriersCountF = randomF.Next(0, countOfRoads);
            CreateMultipleBarriersAtPosition(randomTypeId, randomBarriersCountF, position, rotation);
            entityData.roadCount = randomBarriersCountF;
            break;
        }
        AddData(entityData);
        return(barrier);
    }