• 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 /
  • Help Room /
avatar image
Question by PBSTEM · Jan 05, 2022 at 03:09 PM · c#spawningspawning problems

Items spawn and will not stop spawning.

I have a spawn point that spawns a collectable. Once its collected, I need another item to spawn after so many seconds. The code works except for the fact that they spawn and continue to spawn until the game breaks. I have looked at check sphere and the like, but cant get it to work.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class CoinSpawner : MonoBehaviour
 {
     public GameObject Coin;
     public bool stopspawning = false;
     public float spawnTime;
     public float spawnDelay;
     public float sphereRadius;
 
     // Start is called before the first frame update
     public void Start()
     {
         InvokeRepeating("SpawnObject", spawnTime, spawnDelay);
     }
 
     public void SpawnObject()
     {
         Instantiate(Coin, transform.position, transform.rotation);
 
         if (stopspawning)
         {
             CancelInvoke("SpawnObject");
         }
     }
     public void NoSpawn()
     {
                 // stop the spawning of item
          if (Physics.CheckSphere(transform.position, sphereRadius))
          {
               CancelInvoke("SpawnObject");
          }
     }
 
     
 }

Comment

People who like this

0 Show 0
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

2 Replies

  • Sort: 
avatar image
Best Answer

Answer by Phorj · Jan 06, 2022 at 01:18 AM

A few things from what i can see:

  • You call InvokeRepeating() in Start() but don’t call NoSpawn() ever. NoSpawn() will need to be called by Update() (which you don’t have so there is no way to let your code know what is happening per frame).

  • CancelInvoke() is not called from NoSpawn() for this reason

  • You also don’t call CancelInvoke() from SpawnObject(), because the bool stopspawning is set as false, and using an if statement in shorthand like

if (stopspawning) means you’re saying if (stopspawning == true), which means it will never call.

So here's a few adjustments:

  using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  
  public class CoinSpawner : MonoBehaviour
  {
      public GameObject Coin;
      public bool stopspawning = false;
      public float spawnTime;
      public float spawnDelay;
      public float sphereRadius;
  
      // Start is called before the first frame update
      public void Start()
      {
          InvokeRepeating("SpawnObject", spawnTime, spawnDelay);
      }
      
      // Added Update() so it checks the transform each frame through the NoSpawn() method
      
      public void Update()
      {
         NoSpawn();
      }
  
      public void SpawnObject()
      {
          Instantiate(Coin, transform.position, transform.rotation);
     
          if (stopspawning)
          {
             CancelObjectSpawn();
          }
      }
      public void NoSpawn()
      {
           // stop the spawning of item
           if (Physics.CheckSphere(transform.position, sphereRadius))
           {
                stopspawning = true;
           }
      }
      
      // Added a separate method to cancel the spawning of the object
      // This method is called if stopspawning is true, which in turn is checked each frame
      // in Update() via the NoSpawn() method
      
      public void CancelObjectSpawn()
      {
         CancelInvoke("SpawnObject");
      }
  }




Comment
PBSTEM

People who like this

1 Show 3 · 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 PBSTEM · Jan 06, 2022 at 03:44 PM 0
Share

Thank you, I will work this in to my code. If I get things working right Ill mark it as the answer. I appreciate your time and effort.

avatar image PBSTEM · Jan 06, 2022 at 04:04 PM 0
Share

I have worked this into the code, the items never respawn. I have adjusted the size of the check sphere. Once it is collected, the item never respawns.

avatar image Phorj PBSTEM · Jan 06, 2022 at 11:58 PM 0
Share

Ahh yes my bad. I got carried away and then was like "why do you want to keep respawning it" forgetting the original question.


I also didn't want to modify your code too much, with the intent of giving you a nudge in the right direction, but here we are.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class CoinSpawner : MonoBehaviour
 {
     public GameObject Coin;
     public float spawnTime;
     public float spawnDelay;
     public float sphereRadius;
     public float coinCount = 0;
 
     // Start is called before the first frame update
     public void Start()
     {
         // Don't really need it at Start() since the Update() function will do it
         // But put it here in case you have a specific reason to have it immediately
         // SpawnObject();
     }
 
 
     public void Update()
     {
         SpawnObject();
         NoSpawn();
     }
 
     public void SpawnObject()
     {
         // First time around coinCount will be 0 so it will RespawnObject()
 
         if (coinCount <= 0)
         {
             InvokeRepeating("RespawnObject", spawnTime, spawnDelay);
         }
     }
 
     public void NoSpawn()
     {
         // Stop the spawning of item
         // Minus 1 from coinCount
 
         if (Physics.CheckSphere(transform.position, sphereRadius))
         {
             CancelInvoke("RespawnObject");
             coinCount -= 1;
 
         }
     }
 
     public void RespawnObject()
     {
         // Spawns the Coin
         // Adds 1 to coinCount
 
         Instantiate(Coin, transform.position, transform.rotation);
         coinCount += 1;
     }
 }

avatar image

Answer by PBSTEM · Jan 11, 2022 at 02:03 PM

I've been working with this for a few days now, The code works except for when the item respawns, it spawns 11. @Phorj

Comment

People who like this

0 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 Phorj · Jan 14, 2022 at 06:00 AM 0
Share

Sounds like you need to reset the coinCount....

Based on these questions, I'm guessing you don't have much experience with C#?

As I've said previously, I'm more interested in nudging you in the direction needed instead of doing everything for you. I suggest having a look through Youtube as there are plenty of tutorials that cover this exact topic on how to despawn / respawn items.

I personally would not use InvokeRepeating() but left it as that's what you were using - there are multiple ways to do this, it really comes down to the way you've structured your game and what tickles your fancy!

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta by June 9. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

Follow this Question

Answers Answers and Comments

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

How to rotate an object 2 Answers

Problem with Random Spawning 1 Answer

Spawn system that doesn't instantiated enemies on top of player or each other (C#) 2 Answers

Spawning the player in a procedurally generated map 0 Answers

What is the best way to spawn preplaced and preshaped groups of enemies? 0 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