Vector3 GetPosition(spawnType type, int wallCount)
    {
        var position = new Vector3();

        switch (type)
        {
        case spawnType.Torchlight:
        {
            position = centersTorchSorted[wallCount];
            break;
        }

        case spawnType.WallObstacle:
        {
            position = centersWallSorted[wallCount];
            break;
        }

        default:
            position = GetRandomPointOnMesh(floor.sharedMesh);
            break;
        }


        return(position);
    }
Example #2
0
    // Use this for initialization
    void Start()
    {
        int randomNum = Random.Range(1, 10);

        if (randomNum % 2 == 0)
        {
            flag = spawnType.obsHI;
        }
        else
        {
            flag = spawnType.obsLO;
        }

        player = GameObject.FindWithTag("Player");

        speedFactor = 10.0f;

        if (flag == spawnType.obsHI)
        {
            startPos = GameObject.Find("ObsStart").transform.position;
            endPos   = GameObject.Find("ObsEnd").transform.position;
        }
        else
        {
            startPos = GameObject.Find("Obs Lo Start").transform.position;
            endPos   = GameObject.Find("Obs Lo End").transform.position;
        }

        transform.position = startPos;

        //Creates temporary primitive and sets it as a child of this
        GameObject tempObj = GameObject.CreatePrimitive(PrimitiveType.Cube);

        tempObj.transform.position = transform.position;
        tempObj.transform.parent   = transform;
        //spawnObj();
    }
    void Spawn(GameObject parent, spawnType type, float objectDensity, int wallObstacleCount = 0)
    {
        switch (type)
        {
        case spawnType.Torchlight:
        {
            obstacle           = torchlight;
            obstacle.hideFlags = HideFlags.HideInHierarchy;

            break;
        }

        case spawnType.WallObstacle:
        {
            obstacle = spawnableWallObjects[random.Next(0, spawnableWallObjects.Length - 1)];
            break;
        }

        case spawnType.CenterObstacle:
        {
            obstacle = spawnableCenterObjects[random.Next(0, spawnableCenterObjects.Length)];
            break;
        }

        case spawnType.Waypoint:
        {
            obstacle           = new GameObject("Waypoint");
            obstacle.hideFlags = HideFlags.HideInHierarchy;
            break;
        }

        case spawnType.Platform:
        {
            obstacle           = platform;
            obstacle.hideFlags = HideFlags.HideInHierarchy;
            break;
        }

        case spawnType.Enemy:
        {
            obstacle = enemy;
            break;
        }

        default:
            break;
        }

        if (obstacle == null)
        {
            Destroy(obstacle);
        }

        Vector3 position      = GetPosition(type, wallObstacleCount);
        bool    validPosition = false;


        if (type == spawnType.CenterObstacle || type == spawnType.Waypoint || type == spawnType.Platform || type == spawnType.Enemy)
        {
            while (!validPosition)
            {
                position      = GetPosition(type, wallObstacleCount);
                validPosition = true;
                int        i         = parent.transform.childCount;
                Collider[] colliders = Physics.OverlapSphere(position, objectDensity);
                foreach (Collider col in colliders)
                {
                    if (col.tag == "Obstacle" || col.tag == "BoxCollective" || col.tag == "Wall")
                    {
                        validPosition = false;
                        break;
                    }
                }
            }
        }
        else
        {
            validPosition = true;
        }
        if (validPosition)
        {
            switch (type)
            {
            case spawnType.Torchlight:
            {
                var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity);
                obs.transform.parent = parent.transform;
                var newHeigh = new Vector3(obs.transform.position.x, 2f, obs.transform.position.z);
                obs.transform.position = newHeigh;
                obs.transform.LookAt((centersTorchSorted[wallObstacleCount] + normalsTorchSorted[wallObstacleCount]));
                break;
            }

            case spawnType.WallObstacle:
            {
                var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.Euler(0, 0, 0));
                obs.transform.parent = parent.transform;
                var newHeigh = new Vector3(obs.transform.position.x, 0f, obs.transform.position.z);
                obs.transform.position = newHeigh;
                break;
            }

            case spawnType.CenterObstacle:
            {
                var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity);
                obs.transform.parent = parent.transform;

                break;
            }

            case spawnType.Waypoint:
            {
                var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity);
                obs.transform.parent = parent.transform;
                obs.gameObject.tag   = "Waypoint";
                break;
            }

            case spawnType.Platform:
            {
                var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity);
                obs.transform.parent = parent.transform;
                obs.GetComponent <Platform>().ReloadMapUI = ReloadMapUI;
                GetComponent <PlayerSpawner>().CreatePlayer(obs);
                break;
            }

            case spawnType.Enemy:
            {
                var obs = Instantiate(obstacle, waypointList[random.Next(0, waypointList.Count)], Quaternion.identity);
                obs.transform.parent = parent.transform;
                var stats = SkeletorStats();
                obs.GetComponent <EnemyBehaviour>().enemyDefinition = stats;
                obs.GetComponent <EnemyStats>().enemyDefinition     = stats;
                obs.GetComponent <EnemyAI>().patrolTargets          = waypointList.ToArray();
                break;
            }

            default:
                break;
            }
        }
    }