Beispiel #1
0
    public static Vector3 GetRandomSpawnpoint()
    {
        ZombieSpawn spawn    = GetRandomSpawn();
        Vector3     spawnPos = spawn.transform.position + Random.insideUnitSphere * spawn.Radius;

        if (NavMesh.SamplePosition(spawnPos, out NavMeshHit hit, spawn.Radius * 2, 1))
        {
            spawnPos = hit.position;
        }
        return(spawnPos);
    }
Beispiel #2
0
 private IEnumerator ZombieSpawner(int waveSize)
 {
     //Debug.Log("Start Spawning Zombies!");
     for (int i = waveSize; i > 0; i--)
     {
         if (spawnZombies)
         {
             SpawnZombie(ZombieSpawn.GetRandomSpawnpoint()); //Spawn zombie AND SEND UP NORMAL ASWELL
         }
         yield return(new WaitForSeconds(zombieSpawnRate));
     }
 }
    void Start()
    {
        hudTexte = HUD.GetComponentInChildren <Text>();
        SetCibleAleatoire();
        ZombieSpawn = this.GetComponent <ZombieSpawn>();

        //Place les groupes de lumieres dans une liste
        foreach (GroupeLampe groupeL in lumiereCouloirs.GetComponentsInChildren <GroupeLampe>())
        {
            groupeLampeCouloirs.Add(groupeL);
        }
    }
Beispiel #4
0
    Vector3 AdjustPositionToTerrain(ZombieSpawn currentZombie)
    {
        Vector3    outVector = new Vector3(0, -100, 0);
        RaycastHit hit;
        Ray        ray       = new Ray(currentZombie.originalPosition + currentZombie.container.transform.position, -currentZombie.zombie.transform.up);
        int        layerMask = 1 << terrainLayer;

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
        {
            if (hit.collider != null)
            {
                outVector = hit.point;
            }
        }
        return(outVector);
    }
Beispiel #5
0
    IEnumerator Spawner(ZombieSpawn z)
    {
        for (;;)
        {
            if (Vector3.Distance(z.zombie.transform.position, target.transform.position) > spawnDistance && z.container.CompareTag("ChaserZ"))
            {
                yield return(new WaitForSeconds(timeBetweenSpawn));
            }
            if (Vector3.Distance(z.zombie.transform.position, target.transform.position) > spawnDistance)
            {
                z.zombie.SetActive(false);
                if (z.container.CompareTag("ChaserZ"))
                {
                    yield return(new WaitForSeconds(timeBetweenSpawn));

                    z.container.transform.position = target.transform.position;
                    NavMeshAgent navMesh = z.zombie.GetComponent <NavMeshAgent>();
                    if (navMesh)
                    {
                        navMesh.enabled = true;
                        z.zombie.transform.localPosition = z.originalPosition;
                        navMesh.Warp(AdjustPositionToTerrain(z));
                    }
                    else
                    {
                        z.zombie.SetActive(false);
                    }
                    if (zombieHordesActive)
                    {
                        z.zombie.SetActive(true);
                    }
                }
            }
            else
            {
                if (zombieHordesActive || z.container.CompareTag("StationZ"))
                {
                    z.zombie.SetActive(true);
                }
            }
            yield return(null);
        }
    }
Beispiel #6
0
 void Start()
 {
     player       = GameObject.FindObjectOfType <Player>();
     zombieSpawn  = GameObject.FindObjectOfType <ZombieSpawn>();
     speed_zombie = Random.Range(2, 3);
 }
Beispiel #7
0
 private void _on_SpawnOver(ZombieSpawn spawn)
 {
     this.isRoundOver();
 }