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 unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 10:37 AM · c#unity 52drandomgenerate

How to instantiate prefabs at random postions in 2d

I need to instantiate 20 carrots in a 10x8 grid, i attached the script to the prefab called Carrot with the tag Pickup,.

using System.Collections; using System.Collections.Generic; using UnityEngine; using System;

public class RandomGenerating : MonoBehaviour {

 int carrots = 20;
 int[] vectorX={0};
 int[] vectorY={0};
 float randomNumberX=0;
 float randomNumberY=0;
 public GameObject Carrot;
 void Start () {
     int ok = 0;
     int counter = 0;
     int curentNR = 0;

     while (counter < carrots) {
         randomNumberX = UnityEngine.Random.Range (0, 9);
         randomNumberY = UnityEngine.Random.Range (0, 7);
         ok = 0;
         for (int counter2 = 0; counter2 < curentNR; counter2++) {
             if (randomNumberX == vectorX [counter] && randomNumberY == vectorY [counter]) {
                 ok = 1;
                 break;
             }  
         }
         if (ok == 0) {
             Console.WriteLine ("X: " + randomNumberX + ", Y: " + randomNumberY);
             vectorX [counter] = (int)randomNumberX;
             vectorY [counter] = (int)randomNumberY;
             counter++;
             curentNR++;
             Instantiate(Carrot, new Vector3(randomNumberX, randomNumberY, 0), Quaternion.identity);
         }
     }
         
 }

}

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
1
Best Answer

Answer by Harinezumi · Feb 27, 2018 at 11:05 AM

Your solution is almost correct, but you should have checked all the elements of vectorX and vectorY if the space is already occupied, and correctly initialize them to the number of carrots to be generated.
This is a cleaner way:

 [SerializeField] int requiredCarrots = 20;
 [SerializeField] GameObject carrotPrefab = null;
 
 private void Start () {
     if (carrotPrefab == null || requiredCarrots > 10 * 8) { return; } // protect against some errors
 
     bool[,] occupiedPositions = new bool[10, 8]; // you can use a 2D array of bools to store if a position is occupied
     for (int i = 0; i < requiredCarrots; ++i) {
         int x, y; // need to declare variables used in while condition before the do-while
         do {
             // Random.Range(int, int) is inclusive-exclusive
             x = Random.Range(0, 10); 
             y = Random.Range(0, 8);             
         } while (occupiedPositions[x, y]);
         occupiedPositions[x, y] = true;
         Instantaite(carrotPrefab, new Vector3(x, y, 0), Quaternion.identity);
     }
 }
Comment
Add comment · Show 5 · 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 unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 11:35 AM 0
Share

Thank you for you answer. I still have a problem: UnityEngine.Quaternion does not contain a definition for 'Identity'

avatar image Harinezumi unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 11:36 AM 0
Share

Sorry, it's Quaternion.identity with lower-case i. I updated the answer.

avatar image unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 11:38 AM 0
Share

The program is running, but on my scene the carrots still don't appear. What could be the problem?

avatar image Harinezumi unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 11:46 AM 0
Share

You need a game object in the scene that has this script on it, and assign to the carrotPrefab field the game object that represents your carrots. Important, the carrot game object must NOT have this script on it, or you start to spawn infinite carrots!

avatar image unity_nRNQ_YOy0ET1aw · Feb 27, 2018 at 11:47 AM 1
Share

i did it. thank you very much, @Harinezumi

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

512 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

Related Questions

Attaching multiple animation events to player 1 Answer

Unity Joystick stops working after like 30s 1 Answer

Unity 5 2d Thorw Object 1 Answer

Should I use built-in tilemaps or create my own tilemap system? 1 Answer

For Some reason, collider check has extra collider. 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