I have a script that spawn my cube in the same place i want it to spawn at different positions every time ? how do i do this ?
Thanks in Advance!!
var prefabToSpawn:Transform;
var spawnTime:float;
var spawnTimeRandom:float;
private var spawnTimer:float;
function Awake ()
{
ResetSpawnTimer();
}
function Update()
{
if(spawnTimer > 0)
{
spawnTimer -= Time.deltaTime;
if(spawnTimer <= 0.0)
{
spawnTimer = 0;
Instantiate(prefabToSpawn, transform.position, Quaternion.identity);
ResetSpawnTimer();
}
}
}
function ResetSpawnTimer()
{
spawnTimer = spawnTime + Random.Range(0, spawnTimeRandom*100)/100.0;
}
If you want randomness, try this:
Instantiate(prefabToSpawn, transform.position + Vector3(Random.Range(0f, 10000f),Random.Range(0f, 10000f), Random.Range(0f, 10000f)), Quaternion.identity);
this essentially adds a random Vector3 to the original transform position of the gameobject you attach this script to. For a more accurate random (yet pregiven) spawn, use an array of spawn points (vector3s) and do get a random index from those spawnpoints to spawn on to.
Line 26 reads as followed:
Instantiate(prefabToSpawn, transform.position, Quaternion.identity);
The part that says transform.position is the location where prefabToSpawn will spawn. Change this value and you’ll get a different location.
You can do something along the lines of what you did in your ResetSpawnTimer() method.
Create a random range to “offset” the position.
If you need further help let me know.
EDIT
var prefabToSpawn:Transform;
var spawnTime:float;
var spawnTimeRandom:float;
var minimumXValue : float;
var maximumXValue : float;
var minimumYValue : float;
var maximumYValue : float;
var minimumZValue : float;
var maximumZValue : float;
private var spawnTimer:float;
function Awake ()
{
ResetSpawnTimer();
}
function Update()
{
if(spawnTimer > 0)
{
spawnTimer -= Time.deltaTime;
if(spawnTimer <= 0.0)
{
spawnTimer = 0;
var offset : Vector3; //a vector3 is (x, y, z)
offset = new Vector3(Random.Range(minimumXValue, maximumXValue), Random.Range(minimumYValue,maximumYValue), Random.Range(minimumZValue,maximumZValue));
Instantiate(prefabToSpawn, transform.position + offset , Quaternion.identity);
ResetSpawnTimer();
}
}
}
function ResetSpawnTimer()
{
spawnTimer = spawnTime + Random.Range(0, spawnTimeRandom*100)/100.0;
}