Skip to content

Instantly share code, notes, and snippets.

@Figarist
Created October 17, 2022 19:04
Show Gist options
  • Save Figarist/3196eb8596a06f42fe1d59492106ad4d to your computer and use it in GitHub Desktop.
Save Figarist/3196eb8596a06f42fe1d59492106ad4d to your computer and use it in GitHub Desktop.
Unity prefab tree generator based on terrain trees in scene
using System.Collections.Generic;
using UnityEngine;
public class TreeGenerator : MonoBehaviour
{
[SerializeField] private bool createOnStart;
[SerializeField] private List<GameObject> trees;
[SerializeField] private float minSize,maxSize;
private void Start()
{
if (!createOnStart) return;
var terrain = GetComponentInChildren<Terrain>();
var terrainData = terrain.terrainData;
foreach (var terrainTree in terrainData.treeInstances)
{
var worldTreePos = Vector3.Scale(terrainTree.position, terrainData.size) + Terrain.activeTerrain.transform.position;
var tree = Instantiate(trees[Random.Range(0,trees.Count)], worldTreePos, Quaternion.identity, transform);
tree.transform.localScale = Vector3.one*Random.Range(minSize,maxSize);
tree.transform.rotation = Quaternion.AngleAxis(Random.Range(-360f,360f), Vector3.up);
}
terrain.treeDistance = 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment