Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 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 /
  • Help Room /
avatar image
0
Question by UTPBSTEM · Jan 05 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
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

2 Replies

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

Answer by Phorj · Jan 06 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
Add comment · 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 UTPBSTEM · Jan 06 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 UTPBSTEM · Jan 06 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 UTPBSTEM · Jan 06 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
0

Answer by UTPBSTEM · Jan 11 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
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 Phorj · Jan 14 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!

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

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

Related Questions

Problem with Random Spawning 1 Answer

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

How to rotate an object 2 Answers

Picking up an item and spawning a new one. 0 Answers

Any Way to Improve These Scripts or Increase Game Performance? 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