Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 AlejandroBoss10 · Mar 08, 2018 at 05:35 PM · coroutinespawnienumerator

Spawn objects in burst of three?

Hey everyone, so I'm going to have a boss level and I want it to shoot once but in bursts of three. Similar to that of a burst gun in FPS games. I want the boss (enemy) to spawn three shots in like a second and then wait like 5 seconds and do it again. I have it so that it spawns once every five seconds, but I don't know how to get it to due bursts of three or more. My the script spawns only one object every five seconds right now. Below is what I have so far for my spawning script to spawn one thing every five seconds. Thanks for any and all help. My game is in 2D by the way, if that matters. PS: I think that I have to use a courotine or the IEnumerator thing, but I'm not really familiar with that. Thanks using UnityEngine; using System.Collections;

public class Spawner : MonoBehaviour { public float spawnTime = 5f; // The amount of time between each spawn. public float spawnDelay = 3f; // The amount of time before spawning starts. public GameObject[] enemies; // Array of enemy prefabs.

 void Start ()
 {
     // Start calling the Spawn function repeatedly after a delay .
     InvokeRepeating("Spawn", spawnDelay, spawnTime);
 }


 void Spawn ()
 {
     // Instantiate a random enemy.
     int enemyIndex = Random.Range(0, enemies.Length);
     Instantiate(enemies[enemyIndex], transform.position, transform.rotation);

     // Play the spawning effect from all of the particle systems.
     foreach(ParticleSystem p in GetComponentsInChildren<ParticleSystem>())
     {
         p.Play();
     }
 }

}

Comment
Add comment
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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by SkaredCreations · Mar 08, 2018 at 07:20 PM

You can use a coroutine (note that I've added "spawnCount" property to your class to set how many instances you want to spawn):

 using System.Collections;
 using UnityEngine;
 
 public class Spawner : MonoBehaviour
 {
     public int spawnCount = 3; // The number of spawned objects.
     public float spawnTime = 5f; // The amount of time between each spawn.
     public float spawnDelay = 3f; // The amount of time before spawning starts.
     public GameObject[] enemies; // Array of enemy prefabs.
 
     void Start()
     {
         // Start calling the Spawn function repeatedly after a delay .
         StartCoroutine(Spawn());
     }
 
     void OnDestroy()
     {
         StopAllCoroutines();
     }
 
     IEnumerator Spawn()
     {
         // Initial delay
         yield return new WaitForSeconds(spawnDelay);
 
         while (true)
         {
             // Calculate how much it should wait to spawn the instances in 1s
             float waitForNext = 1f / spawnCount;
             for (int i = 0; i < spawnCount; i++)
             {
                 // Instantiate a random enemy.
                 int enemyIndex = Random.Range(0, enemies.Length);
                 Instantiate(enemies[enemyIndex], transform.position, transform.rotation);
                 // Wait for the next instance spawn
                 yield return new WaitForSeconds(waitForNext);
             }
 
             // Play the spawning effect from all of the particle systems.
             foreach (ParticleSystem p in GetComponentsInChildren<ParticleSystem>())
             {
                 p.Play();
             }
 
             // Wait for the next cycle of spawns
             yield return new WaitForSeconds(spawnTime);
         }
     }
 }
 
Comment
Add comment · Share
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

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

80 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

spawn timer problem 2 Answers

How to have IEnumerators run but not in Update 2 Answers

Enemy spawning problem... 0 Answers

3rd person controller in c#? 1 Answer

making a 2D character Speak for different lenghts of time 2 Answers


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