Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by NEWBIE_1 · Jun 26, 2015 at 06:11 PM · enemyzombiespawning-enemies

Enemy Wave System Error

Hi, i have this script that creates different types of waves however once all the enemies have been killed another wave doesn's spawn. can someone look at my script and see if there is something wrong with it. Looking through the script there is code to spawn more enemies when there is <0 but it isnt working for some reason. This is the script:

 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;

 public class Spawner : MonoBehaviour
 {
 // Color of the gizmo
 public Color gizmoColor = Color.red;
 
 //-----------------------------------
 // All the Enums
 //-----------------------------------
 // Spawn types
 public enum SpawnTypes
 {
     Normal,
     Once,
     Wave,
     TimedWave
 }
 // The different Enemy levels
 public enum EnemyLevels
 {
     Easy,
     Medium,
     Hard,
     Boss
 }
 //---------------------------------
 // End of the Enums
 //---------------------------------
 
 // Enemy level to be spawnedEnemy
 public EnemyLevels enemyLevel = EnemyLevels.Easy;
 
 //----------------------------------
 // Enemy Prefabs
 //----------------------------------
 public GameObject EasyEnemy;
 public GameObject MediumEnemy;
 public GameObject HardEnemy;
 public GameObject BossEnemy;
 private Dictionary<EnemyLevels, GameObject> Enemies = new Dictionary<EnemyLevels, GameObject>(4);
 //----------------------------------
 // End of Enemy Prefabs
 //----------------------------------
 
 //----------------------------------
 // Enemies and how many have been created and how many are to be created
 //----------------------------------
 public int totalEnemy = 10;
 private int numEnemy = 0;
 private int spawnedEnemy = 0;
 //----------------------------------
 // End of Enemy Settings
 //----------------------------------
 
 
 // The ID of the spawner
 private int SpawnID;
 
 //----------------------------------
 // Different Spawn states and ways of doing them
 //----------------------------------
 private bool waveSpawn = false;
 public bool Spawn = true;
 public SpawnTypes spawnType = SpawnTypes.Normal;
 // timed wave controls
 public float waveTimer = 30.0f;
 private float timeTillWave = 10.0f;
 //Wave controls
 public int totalWaves = 5;
 private int numWaves = 0;
 //----------------------------------
 // End of Different Spawn states and ways of doing them
 //----------------------------------
 void Start()
 {
     // sets a random number for the id of the spawner
     SpawnID = Random.Range(1, 500);
     Enemies.Add(EnemyLevels.Easy, EasyEnemy);
     Enemies.Add(EnemyLevels.Boss, BossEnemy);
     Enemies.Add(EnemyLevels.Medium, MediumEnemy);
     Enemies.Add(EnemyLevels.Hard, HardEnemy);
 }
 // Draws a cube to show where the spawn point is... Useful if you don't have a object that show the spawn point
 void OnDrawGizmos()
 {
     // Sets the color to red
     Gizmos.color = gizmoColor;
     //draws a small cube at the location of the gam object that the script is attached to
     Gizmos.DrawCube(transform.position, new Vector3 (0.5f,0.5f,0.5f));
 }
 void Update ()
 {
     if(Spawn)
     {
         // Spawns enemies everytime one dies
         if (spawnType == SpawnTypes.Normal)
         {
             // checks to see if the number of spawned enemies is less than the max num of enemies
             if(numEnemy < totalEnemy)
             {
                 // spawns an enemy
                 spawnEnemy();
             }
         }
         // Spawns enemies only once
         else if (spawnType == SpawnTypes.Once)
         {
             // checks to see if the overall spawned num of enemies is more or equal to the total to be spawned
             if(spawnedEnemy >= totalEnemy)
             {
                 //sets the spawner to false
                 Spawn = false;
             }
             else
             {
                 // spawns an enemy
                 spawnEnemy();
             }
         }
         //spawns enemies in waves, so once all are dead, spawns more
         else if (spawnType == SpawnTypes.Wave)
         {
             if(numWaves < totalWaves + 1)
             {
                 if (waveSpawn)
                 {
                     //spawns an enemy
                     spawnEnemy();
                 }
                 if (numEnemy == 0)
                 {
                     // enables the wave spawner
                     waveSpawn = true;
                     //increase the number of waves
                     numWaves++;
                 }
                 if(numEnemy == totalEnemy)
                 {
                     // disables the wave spawner
                     waveSpawn = false;
                 }
             }
         }
         // Spawns enemies in waves but based on time.
         else if(spawnType == SpawnTypes.TimedWave)
         {
             // checks if the number of waves is bigger than the total waves
             if(numWaves <= totalWaves)
             {
                 // Increases the timer to allow the timed waves to work
                 timeTillWave += Time.deltaTime;
                 if (waveSpawn)
                 {
                     //spawns an enemy
                     spawnEnemy();
                 }
                 // checks if the time is equal to the time required for a new wave
                 if (timeTillWave >= waveTimer)
                 {
                     // enables the wave spawner
                     waveSpawn = true;
                     // sets the time back to zero
                     timeTillWave = 0.0f;
                     // increases the number of waves
                     numWaves++;
                     // A hack to get it to spawn the same number of enemies regardless of how many have been killed
                     numEnemy = 0;
                 }
                 if(numEnemy >= totalEnemy)
                 {
                     // diables the wave spawner
                     waveSpawn = false;
                 }
             }
             else
             {
                 Spawn = false;
             }
         }
     }
 }
 // spawns an enemy based on the enemy level that you selected
 private void spawnEnemy()
 {
     GameObject Enemy = (GameObject) Instantiate(Enemies[enemyLevel], gameObject.transform.position, Quaternion.identity);
     Enemy.SendMessage("SetName", SpawnID);
     // Increase the total number of enemies spawned and the number of spawned enemies
     numEnemy++;
     spawnedEnemy++;
 }
 // Call this function from the enemy when it "dies" to remove an enemy count
 public void killEnemy(int sID)
 {
     // if the enemy's spawnId is equal to this spawnersID then remove an enemy count
     if (SpawnID == sID)
     {
         numEnemy--;
     }
 }
 //enable the spawner based on spawnerID
 public void enableSpawner(int sID)
 {
     if (SpawnID == sID)
     {
         Spawn = true;
     }
 }
 //disable the spawner based on spawnerID
 public void disableSpawner(int sID)
 {
     if(SpawnID == sID)
     {
         Spawn = false;
     }
 }
 // returns the Time Till the Next Wave, for a interface, ect.
 public float TimeTillWave
 {
     get
     {
         return timeTillWave;
     }
 }
 // Enable the spawner, useful for trigger events because you don't know the spawner's ID.
 public void enableTrigger()
 {
     Spawn = true;
 }

}

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Mastasytha · Jun 27, 2015 at 04:07 PM 0
Share

When enemy is killed does it access the script to $$anonymous$$us 1 from numEnemys

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

How to spawn enemy? (Enemies) 1 Answer

I need Help spawning game objects (enemys) from the top of my screen,How can i spawn my Game Objects on top of the sreec randomly 1 Answer

I need help creating a ZombieAI for my Walking Dead Game 0 Answers

Disable a target after trigger exit? 1 Answer

zombie enemy AI 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges