コード例 #1
0
    public void SpawnUnits()
    {
        GameObject combatSemaphore = GameObject.FindWithTag("CombatSemaphore");

        if (combatSemaphore == null)
        {
            Debug.LogError("Combat Semaphore not found, you better have initialized enemies yourself");
            return;
        }
        Debug.Log("Spawning units from semaphore information");
        player = new List <CombatUnit>();
        enemy  = new List <CombatUnit>();

        CombatSemaphore sem = combatSemaphore.GetComponent <CombatSemaphore>();

        for (int i = 0; i < sem.playerParty.Count; i++)
        {
            GameObject newParyMember = Instantiate(sem.playerParty[i], playerLocations[i].position, playerLocations[i].rotation);
            player.Add(newParyMember.GetComponent <CombatUnit>());
        }

        for (int i = 0; i < sem.enemiesToSpawn.Count; i++)
        {
            GameObject newEnemy = Instantiate(sem.enemiesToSpawn[i], enemyLocations[i].position, enemyLocations[i].rotation);
            enemy.Add(newEnemy.GetComponent <CombatUnit>());
        }

        sem.MarkJobCompleted();
    }
コード例 #2
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (player != null)
        {
            if (playerRB2D.velocity.x != 0 || playerRB2D.velocity.y != 0)
            {
                framesSinceCombat++;
                if (Random.Range(0, 100) % framesSinceCombat >= 99.0f)
                {
                    framesSinceCombat = 1.0f;
                    //New stuff is creating a semaphore and configuring it with relavent information.
                    Debug.Log("Starting battle, generating enemies");
                    GameObject      semaphore = Instantiate(semaphoreRef);
                    CombatSemaphore comSem    = semaphore.GetComponent <CombatSemaphore>();
                    DontDestroyOnLoad(semaphore); //TODO do I need this?
                    int monstersToSpawn = Random.Range(0, 100);
                    Debug.Log("Random number is " + monstersToSpawn);
                    for (int i = 0; i < enemies.Count; i++)
                    {
                        Debug.Log("Checking random against " + enemies[i].probability + " with result " + monstersToSpawn % enemies[i].probability);
                        if ((monstersToSpawn % enemies[i].probability) <= 1)
                        {
                            Debug.Log("Monster added to encounter list");
                            comSem.enemiesToSpawn.Add(enemies[i].enemy);
                        }
                    }
                    if (comSem.enemiesToSpawn.Count == 0)
                    {
                        comSem.enemiesToSpawn.Add(enemies[0].enemy);
                    }

                    comSem.playerParty = playerParty;

                    LevelLoader ll = GameObject.FindGameObjectWithTag("LevelLoader").GetComponent <LevelLoader>();
                    ll.BeginCombat("CombatBase");
                }
            }
        }
    }