Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Maryoomi · May 01, 2015 at 04:08 AM · c#unity5positioninginstantiationrandomspawning

How to Spawn and Place an Object in Line after Spawned Randomized Object?

I am working on a 2D game which first spawns a number of objects in different positions randomly. What I am trying to do additionally is to spawn an object right after the position of the last clone of randomized objects according to the X axis. I have made many attempts to do that and all attempts failed.

Here is the script I am using with comments on each code:

  using UnityEngine;
     using System;
     using System.Collections.Generic;         //Allows us to use Lists.
     using Random = UnityEngine.Random;         //Tells Random to use the Unity Engine random number generator.
     
     namespace Completed
         
     {
         
         public class BoardManager : MonoBehaviour
         {
             
             // Using Serializable allows us to embed a class with sub properties in the inspector.
             [Serializable]
             public class Count
             {
                 public int minimum;             //Minimum value for our Count class.
                 public int maximum;             //Maximum value for our Count class.
                 
                 
                 //Assignment constructor.
                 public Count (int min, int max)
                 {
                     minimum = min;
                     maximum = max;
                 }
             }
             
             
             public int columns = 7;                                         //Number of columns in our game board.
             public Count random1Count = new Count (1, 2);                        //Lower and upper limit for our random number of objects
             public Count random2Count = new Count (1, 1);
             public Count random3Count = new Count (1, 1);
             public Count random4Count = new Count (1, 1);
             
             public GameObject[] randomObject1;                                    //Array of objects prefabs.
             public GameObject[] randomObject2;
             public GameObject[] randomObject3;
             public GameObject[] randomObject4;
     
             public GameObject obj; // the independent object declaration
     
             private List <Vector3> gridPositions = new List <Vector3> ();    //A list of possible locations to place objects.
             
             
             //Clears our list gridPositions and prepares it to generate a new board.
             void InitialiseList ()
             {
                 //Clear our list gridPositions.
                 gridPositions.Clear ();
     
                 //Loop through x axis (columns).
                 for(int x = 2; x < columns; x++)
                 {
                     
                     
                     //At each index add a new Vector3 to our list with the x and y coordinates of that position.
                     gridPositions.Add (new Vector3(x, 0.3f, 0f));
     
                     Instantiate(obj); // my attempt to instantiate the separate object
                     Debug.Log(obj.transform.position.x); // my attempt to track the position of the separate object
                 }
     
             }
             
             
             //RandomPosition returns a random position from our list gridPositions.
             Vector3 RandomPosition ()
             {
                 //Declare an integer randomIndex, set it's value to a random number between 0 and the count of items in our List gridPositions.
                 int randomIndex = Random.Range (0, gridPositions.Count);
                 
                 //Declare a variable of type Vector3 called randomPosition, set it's value to the entry at randomIndex from our List gridPositions.
                 Vector3 randomPosition = gridPositions[randomIndex];
                 
                 
                 //Remove the entry at randomIndex from the list so that it can't be re-used.
                 gridPositions.RemoveAt (randomIndex);
                 
                 
                 //Return the randomly selected Vector3 position.
                 return randomPosition;
                 
             }
             
             
             //LayoutObjectAtRandom accepts an array of game objects to choose from along with a minimum and maximum range for the number of objects to create.
             void LayoutObjectAtRandom (GameObject[] tileArray, int minimum, int maximum)
             {
                 //Choose a random number of objects to instantiate within the minimum and maximum limits
                 int objectCount = Random.Range (minimum, maximum+1);
                 
                 //Instantiate objects until the randomly chosen limit objectCount is reached
                 for(int i = 0; i < objectCount; i++)
                 {
                     
                     //Choose a position for randomPosition by getting a random position from our list of available Vector3s stored in gridPosition
                     Vector3 randomPosition = RandomPosition();
                     
                     
     
                     
                     //Choose a random tile from tileArray and assign it to tileChoice
                     GameObject tileChoice = tileArray[Random.Range (0, tileArray.Length)];
     
                     
                     //Instantiate tileChoice at the position returned by RandomPosition with no change in rotation
                     Instantiate(tileChoice, randomPosition, Quaternion.identity);
                     
                 }
                 
             }
             
             
             //SetupScene initializes our level and calls the previous functions to lay out the game board
             public void SetupScene (int level)
             {
     
                 //Reset our list of gridpositions.
                 InitialiseList ();
                 
                 //Instantiate a random number of objects based on minimum and maximum, at randomized positions.
                 LayoutObjectAtRandom (randomObject1, random1Count.minimum, random1Count.maximum);
                 LayoutObjectAtRandom (randomObject2, random2Count.minimum, random2Count.maximum);
                 LayoutObjectAtRandom (randomObject3, random3Count.minimum, random3Count.maximum);
                 LayoutObjectAtRandom (randomObject4, random4Count.minimum, random4Count.maximum);
                 
                 
             }
         }
     }
 
Comment
Add comment · Show 1
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 melkorinos · May 04, 2015 at 03:28 PM 0
Share

If I am correct the problem is that you cannot get the position of the object you instatiated. To do that you need to store it to a variable. TRy this:

 Gameobject go;
 go = Instantiate (-prefab-,-position-,-rotation-) as GameObject;

then you can do go.transform.position

If this is not your problem then please be more specific ;)

0 Replies

· Add your reply
  • Sort: 

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

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

How to Spawn an Object in between Randomly Spawned Objects with no Overlapping? 0 Answers

Upload image or file into server using 3D C# 0 Answers

Making a bubble level (not a game but work tool) 1 Answer


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