Initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
namespace PolyPerfect
|
||||
{
|
||||
[ExecuteInEditMode]
|
||||
public class RandomCharacterPlacer : MonoBehaviour
|
||||
{
|
||||
[SerializeField] float spawnSize;
|
||||
[SerializeField] int spawnAmmount;
|
||||
|
||||
[SerializeField] GameObject[] characters;
|
||||
|
||||
[ContextMenu("Spawn Characters")]
|
||||
void SpawnAnimals()
|
||||
{
|
||||
var parent = new GameObject("SpawnedCharacters");
|
||||
|
||||
for (int i = 0; i < spawnAmmount; i++)
|
||||
{
|
||||
var value = Random.Range(0, characters.Length);
|
||||
|
||||
Instantiate(characters[value], RandomNavmeshLocation(spawnSize), Quaternion.identity, parent.transform);
|
||||
}
|
||||
}
|
||||
|
||||
public Vector3 RandomNavmeshLocation(float radius)
|
||||
{
|
||||
Vector3 randomDirection = Random.insideUnitSphere * radius;
|
||||
randomDirection += transform.position;
|
||||
NavMeshHit hit;
|
||||
Vector3 finalPosition = Vector3.zero;
|
||||
if (NavMesh.SamplePosition(randomDirection, out hit, radius, 1))
|
||||
{
|
||||
finalPosition = hit.position;
|
||||
}
|
||||
return finalPosition;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
Gizmos.DrawWireSphere(transform.position, spawnSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user