• 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 ltrout1999 · Jan 16, 2018 at 03:02 AM · c#gameobjectrandomspawnfor-loop

Script Spawning Double?

I am trying to work on a script to spawn a gameobject at a random position between a range of positions but not too close to each other. It is spawning, just not correctly. It is spawning 2 sets of 12 random positions instead of just 1 set. Each set is following the correct range rules, however when the 2 sets are put together, they don't follow the range rules and are overlapping. I am unsure where I went wrong with this script and would love to get some help with it.

Here it is: using System.Collections; using System.Collections.Generic; using UnityEngine;

 public class SpawnTest : MonoBehaviour 
 {
     public GameObject prefab;
     public int wayPoints = 12;
     public float minDist = 1f;
 
     public List<Vector3> waypointPositions = new List<Vector3>();
 
      
     void Start ()
     {
         FillList();
     }
 
     void FillList ()
     {
         for (int i = 0; i < wayPoints; i++)
         {
             while (waypointPositions.Count < wayPoints)
             {
                 Vector3 randomPos = new Vector3(Random.Range(-2f, 2f), Random.Range(.5f, 4f), 0f);
 
                 bool isClose = false;
                 foreach (Vector3 wp in waypointPositions)
                 {
                     if (Vector3.Distance(wp, randomPos) <= minDist) 
                     {
                         //Debug.Log("dist: " + Vector3.Distance(wp, randomPos));
 
                         isClose = true;
                     }
                 }
 
                 if (!isClose)
                 {
                     waypointPositions.Add(randomPos);
                     Instantiate(prefab, randomPos, prefab.transform.rotation);
                     break;
                 }
             }
         }
     }
 }


When putting wayPoints = 6, I get 18 actual wayPoints. When putting wayPoints to 12, I get 24 waypoints. When putting wayPoints to 24, I get 12 wayPoints.

Comment
Add comment · Show 3
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 MaxGuernseyIII · Jan 16, 2018 at 03:38 AM 0
Share

Are those numbers predictable? You can test that by rerunning several times.

Could it be something that happens inside the prefab you are instantiating? You can test that by trying this script with a different prefab.

It's hard to understand your intent. It was hard for me, at least. It might be that there's something you think you are doing that you are not really doing or something you are doing that you think you aren't really doing. Try refactoring this method into a series of private method calls with intention-revealing names. Try refactoring the private methods the same way, if it helps add clarity.

avatar image ltrout1999 MaxGuernseyIII · Jan 16, 2018 at 03:44 AM 0
Share

The prefab I am using is a basic cylinder, no extras added. The numbers aren't predictable, they are each random every time I run it. It's just confusing me as when I put a smaller number I get more sets doubling the number I need I get the correct amount. I can provide the project files if that helps make anything easier?

avatar image MaxGuernseyIII ltrout1999 · Jan 16, 2018 at 09:41 AM 0
Share

I won't be able to go through your project but someone else might.

Why not try isolating where the problem happens? For instance, start with just taking out the instantiation line and see how many waypoint values you get. If they are incorrect, you can zero in on the problem. If they are correct, you can start looking at the instantiation as the source of the problem.

I've been over and over your algorithm. Nothing jumps out at me.

It can't hurt to swap in a different prefab or to try a different instantiate operation.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by lmoro · Jan 16, 2018 at 02:04 PM

There's nothing wrong in your script.

Maybe you added the component twice?

Here's a package with a basic implementation of your script

https://drive.google.com/open?id=1fFe7jvi-SkufkVlBt-tgNTgHy4uevc23

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 ltrout1999 · Jan 16, 2018 at 04:40 PM 0
Share

I believe there was a bug in Unity itself. After removing the script from the gameobject (I checked each game object and made sure the script was only added once), it still ran and had issues. Then, after actually removing the script from the project it still ran. I ended up just retrying multiple times after Unity crashed several times and it seems to be working fine now.

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

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

490 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

Related Questions

How to spawn randomly with multiple gameobject 2 Answers

How do i spawn an object with a button press? 3 Answers

Spawn gameObject horde, modify concentration of spawned objects. 1 Answer

How can I make an object clone in the time that I indicate it to appear? 0 Answers

How to spawn power ups at random places on random time internvals 1 Answer

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges