46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using UnityEngine;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
[AddComponentMenu("Playground/Gameplay/Object Creator Area")]
 | 
						|
[RequireComponent(typeof(BoxCollider2D))]
 | 
						|
public class ObjectCreatorArea : MonoBehaviour
 | 
						|
{
 | 
						|
	[Header("Object creation")]
 | 
						|
 | 
						|
	// The object to spawn
 | 
						|
	// WARNING: take if from the Project panel, NOT the Scene/Hierarchy!
 | 
						|
	public GameObject prefabToSpawn;
 | 
						|
    public GameObject ItemOne;
 | 
						|
	[Header("Other options")]
 | 
						|
 | 
						|
	// Configure the spawning pattern
 | 
						|
	public float spawnInterval = 1;
 | 
						|
 | 
						|
	private BoxCollider2D boxCollider2D;
 | 
						|
 | 
						|
	void Start ()
 | 
						|
	{
 | 
						|
		boxCollider2D = GetComponent<BoxCollider2D>();
 | 
						|
 | 
						|
		StartCoroutine(SpawnObject());
 | 
						|
	}
 | 
						|
	
 | 
						|
	// This will spawn an object, and then wait some time, then spawn another...
 | 
						|
	IEnumerator SpawnObject ()
 | 
						|
	{
 | 
						|
		while(true)
 | 
						|
		{
 | 
						|
			// Create some random numbers
 | 
						|
			float randomX = Random.Range (-boxCollider2D.size.x, boxCollider2D.size.x) *.5f;
 | 
						|
			float randomY = Random.Range (-boxCollider2D.size.y, boxCollider2D.size.y) *.5f;
 | 
						|
 | 
						|
			// Generate the new object
 | 
						|
			GameObject newObject = Instantiate<GameObject>(prefabToSpawn);
 | 
						|
			newObject.transform.position = new Vector2(randomX + this.transform.position.x, randomY + this.transform.position.y);
 | 
						|
 | 
						|
			// Wait for some time before spawning another object
 | 
						|
			yield return new WaitForSeconds(spawnInterval);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |