- Home /
Spawn random obiect 3d
Hey, I search forums and YouTube but can't find a tutorial on how to do that.
We have a spawner, a random cube must appear every second (red, green, blue)
green only on the axis ((x,y,z)-2 -2 0) blue only on the axis ((x,y,z)-0 -2 0) red only on the axis ((x,y,z)2 -2 0)
that's exactly what it is about https://www.youtube.com/watch?v=RcHzJ5lAdHQ
I'm trying to get a similar effect on a project to school It's just about the spawner.
In this code they appear in random positions
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnBlock : MonoBehaviour
{
public GameObject[] enemies;
public Vector3 spawnValues;
public float spawnWait;
public float spawnMostWait;
public float spawnLeastWait;
public int startWait;
public bool stop;
int randEnemy;
void Start()
{
StartCoroutine(waitSpawner());
}
void Update()
{
spawnWait = Random.Range(spawnLeastWait, spawnMostWait);
}
IEnumerator waitSpawner()
{
yield return new WaitForSeconds(startWait);
while (true)
{
randEnemy = Random.Range(0, 2);
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), 1, Random.Range(-spawnValues.z, spawnValues.z));
Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation);
yield return new WaitForSeconds(spawnWait);
}
}
}
Thank you for your help
Answer by TeamON · May 05, 2021 at 04:53 PM
I added an object "Plane" and its movement in a "Update" loop just to make it look like your video
using System.Collections;
using UnityEngine;
public class SpawnBlock : MonoBehaviour
{
public GameObject[] enemies;
public Vector3 spawnValuesRed;
public Vector3 spawnValuesGreen;
public Vector3 spawnValuesBlue;
public GameObject Plane;
public float spawnWait;
public int startWait;
public float Speed;
private int randEnemy;
private Vector3 spawnPosition;
void Start()
{
StartCoroutine(waitSpawner());
}
void Update()
{
Plane.transform.position -= transform.forward * Time.deltaTime * Speed;
}
IEnumerator waitSpawner()
{
yield return new WaitForSeconds(startWait);
while (true)
{
randEnemy = Random.Range(0, 3); // 0 - green, 1 - red, 2 - blue
switch (randEnemy)
{
case 0:
spawnPosition = spawnValuesGreen;
break;
case 1:
spawnPosition = spawnValuesRed;
break;
case 2:
spawnPosition = spawnValuesBlue;
break;
}
Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation, Plane.transform);
yield return new WaitForSeconds(spawnWait);
}
}
}
Your answer
Follow this Question
Related Questions
Prefab starts halfway through object when placed down 2 Answers
Instantiate a random prefab at an objects location 3 Answers
Instantiate Random 3D Objects/platforms that dont overlap 1 Answer
Problem with random creating prefab 0 Answers
Calling 2 specific random float numbers in random.range using array not working! 2 Answers