Posted March 03, 2023 by omnivore
#dev #terrain
This script is useful to spawn objects from a list onto Terrain.
I didn't work out how to get random x-rotation but maybe you will find it useful nonetheless.
Thanks to the Unity community for help along the way.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnTogether : MonoBehaviour
{
public GameObject[] myObjects;
public int cactusNumber;
void Start()
{
CreateCacti(cactusNumber);
}
void CreateCacti(int cactiNum)
{
for (int i = 0; i < cactiNum; i++)
{
//generate int from the array
int randomIndex = Random.Range(0, myObjects.Length);
Vector3 randomSpawnPosition = new Vector3(Random.Range(-300, 300), i, Random.Range(-300, 300));
//pass random spawn position to terrain height at chosen spot
float spotHeight = Terrain.activeTerrain.SampleHeight(randomSpawnPosition);
//create final position and feed in the values we generated
Vector3 pos = transform.position;
pos.y = spotHeight;
pos.x = randomSpawnPosition.x;
pos.z = randomSpawnPosition.z;
Instantiate(myObjects[randomIndex], pos, Quaternion.identity);
}
}
}