• 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 Floreo · Feb 13, 2018 at 09:57 AM · c#2dinstantiate

Wave Spawner | Instaniating Enemys will Overlap

I am creating a wave Spawner with SpawnPositions but sometimes the Enemies will Overlap...

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class SpawnController : MonoBehaviour {
 
     public Transform[] spawnPos;
     public GameObject enemyPrefab;
     public float timeBetweenWaves = 1f;
     public float timeToSpawn;
     public int enemysEachWave;
     GameObject clone;
 
     void Start () {
         Spawn();
     }
     
 
     void Update () {
         if(Time.time >= timeToSpawn)
         {
             Spawn();
             timeToSpawn = Time.time + timeBetweenWaves;
         }
     }
 
     void Spawn()
     {
         for (int i = 0; i < enemysEachWave; i++)
         {
             clone = Instantiate(enemyPrefab, spawnPos[Random.Range(0, spawnPos.Length)].position, Quaternion.identity);
         }
     }
 }
 
Comment
Add comment · Show 2
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 Harinezumi · Feb 13, 2018 at 10:44 AM 0
Share

Do you mean they overlap in space or they overlap in time? :)

avatar image Floreo Harinezumi · Feb 13, 2018 at 11:59 AM 0
Share

I mean that 2 Enemies are spawning on top of each other. :)

3 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Harinezumi · Feb 13, 2018 at 01:04 PM

To avoid spawning enemies at the same position within a wave you need 1) at least as many spawn positions as enemies 2) only use each spawning positions once.
The first needs to be set up by you.
For the second, either shuffle the array of spawning positions, or you create a list of the positions and remove a position every time it is used (no worries, the original array remains. See below the second approach:

 using System.Collections.Generic; // add this to the top
 
 void Spawn () {
      List<Transform> unusedSpawnPositions = new List<Transform>();
      unusedSpawnPositions.AddRange(spawnPos); // add the positions defined to the list
      for (int i = 0; i < enemysEachWave; ++i) {
           if (unusedSpawnPositions.Count < 1) { break; } // protect against empty list
           int spawnPosIndex = Random.Range(0, unusedSpawnPositions.Count); // select index of spawn position
           clone = Instantiate(enemyPrefab, unusedSpawnPositions[spawnPosIndex];
           unusedSpawnPositions.RemoveAt(spawnPosIndex); // remove spawn position
      }
 }
Comment
Add comment · Show 1 · 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
avatar image Floreo · Feb 13, 2018 at 01:09 PM 0
Share

Thanks, it worked perfectly :)

avatar image
-1

Answer by yummy81 · Feb 13, 2018 at 12:56 PM

It seems to me that you did not add any script to your enemyPrefab which would put the instance of this prefab into motion. It can be also that the script does exist but is not enabled. Or some public variables (like speed) are not assigned in the inspector. It's hard to say, but try to attach this simple script to your enemyPrefab. If clones start moving that means you have the solution:

 using UnityEngine;
 
 public class Enemy : MonoBehaviour
 {
     public float speed = 3f;
         
     private void Update()
     {
         transform.position += Time.deltaTime * speed * transform.forward;
     }
 }
 
 
Comment
Add comment · Show 1 · 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
avatar image Floreo · Feb 13, 2018 at 01:02 PM 1
Share

Thanks but my Problem I need a solution for is the Spawning because sometimes 2 Enemies spawn on the same Spawnpoint so they overlap. Sorry, my Question wasn't clear enough :/

avatar image
0

Answer by melsy · Feb 13, 2018 at 01:11 PM

So i have thought abou this issue with a project i was working on awhile back and what i was thinking about doing was this. Create a dummy game object in the scene with a collider the same size as the enemy. Reference the empty game object on the wave spawner.
When the wave spawner wants to spawn an enemy , have it move the dummy object to the point and if it hits collision randomize the location again. Then set the dummy to Setactive(false) and do the process again .

 pseudo code 

   dummyObject = DO
   wave spawner wants to spawn. 
   DO is moved into that position
   DO is setactive(true)
   if DO has collision
        wave spawner gets a new position 
        DO is moved to that new position
   if no collision
        spawn the enemy.


Comment
Add comment · Show 2 · 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
avatar image Harinezumi · Feb 13, 2018 at 01:29 PM 0
Share

Interesting approach, but you can't detect collision in the same frame that you are currently, only in the next physics update. A raycast or even capsulecast would be better then, but possibly more expensive.

avatar image melsy Harinezumi · Feb 13, 2018 at 01:38 PM 0
Share

for what i was doing with simple enemies spawning randomly then walking around a frame didn't matter. I never tried to make it work i just thought about it over time.

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

489 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 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 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 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 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 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Photon Gun Pickup Not Showing On All Screens 0 Answers

Distribute terrain in zones 3 Answers

Create objects on a mouse click in 2D 1 Answer

Random instantiate at same frame with each instantiate having unique random direction 1 Answer

The prefab you want to instantiate is null. 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