- Home /
Randomly Generated Objects
In my game the player must go between 2 objects (goal poles). I don't know how to spawn them randomly in.
There is 3 sets of poles: Left,Center,Right.
I want the left ones to be at -25,0,N.
I want the center ones to be at 0,0,N.
I want the right ones to be at 25,0,N.
In which N is equal to how far "forward" the player has gone.
EDIT: I want the Z axis to change 35 every time a new set of poles is added for example: Pole 1 = 0,0,0 Pole 2 = -25,0,35 Pole 3 = 0,0,70 Pole 4 = 0,0,105
But I want it to spawn randomly every time.
Answer by nesis · Feb 11, 2014 at 09:45 PM
Keep a variable that stores the z-coordinate of the last-spawned goal. Then when you spawn a new goal, set its position with:
mySavedZ = mySavedZ + 35f;
float randomX = Random.value;
float spawnX;
if (randomX<0.3333f) {
spawnX = -25f;
}
else if (randomX<0.6666f) {
spawnX = 0f;
}
else {
spawnX = 25f;
}
Vector3 newPosition = new Vector3(spawnX,0f,mySavedZ);
You can then set its position with newPosition.
How can I add this to my game? Do I add this script to my prefab?
Add this script to whatever script you're using to automatically place new goal poles. Something to note: mySavedZ
should be a member variable in your script.
The script I provided is in C#, so if you're using Javascript, you'll be able to use the same structure, but will need to declare variables slightly differently (eg Vector3 newPosition
would be replaced with var newPosition : Vector3
).
I don't any code that auto places new poles, thats what I need help with.
If you don't have any scripts in your game so far, you need to add one. You attach a script to a gameobject in the scene, so you always have the main camera. This is a good spot to put the general game behavior in.