static void Main(string[] args) { Minima minima = new Minima(); minima.InitWindow(800, 600, "Minima test"); var ms = new MoveSystem(typeof(TransformComponent), typeof(MoveComponent)); Minima.GetInstance().SystemManager.RegSystem(ms); Random random = new Random(); Texture t = new Texture("test.png"); for (int i = 0; i < 5000; i++) { var test = new GameObject($"test{i}"); test.AddComponent(new RenderComponent() { Drawable = new Sprite(t) { } }); test.AddComponent(new TransformComponent() { LocalPosition = new Vector2f(random.Next(0, 500), random.Next(0, 500)) }); test.AddComponent(new MoveComponent()); test.GetComponent <MoveComponent>().GenDir(); } minima.Run(); }
public GameObject[] npcs; //Matriz que guarda los gameobjects diferentes del heroe. // Use this for initialization public void Start() { Minima m = new Minima(Random.Range(0, 16)); //Randomizador para cantidad minima de objetos a ser instanciados. zombi.color = new Color[] //Matriz de colores para los zombies. { Color.cyan, Color.green, Color.magenta }; GameObject heroe = GameObject.CreatePrimitive(PrimitiveType.Capsule); //Instanciacion del heroe. //Asignacion de una posicion al azar al heroe. Vector3 pos1 = new Vector3(); pos1.x = Random.Range(-10, 10); pos1.y = 1f; pos1.z = Random.Range(-10, 10); heroe.transform.position = pos1; //Asignacion de scripts de camara y movimiento. Camera.main.transform.SetParent(heroe.transform, false); Camera.main.transform.localPosition = new Vector3(0f, 1f, 0.5f); heroe.AddComponent(typeof(FPSmove)); Camera.main.gameObject.AddComponent <FPSAim>(); //Asignacion del script y el tag "heroe" y el rigidbody asi como limitar la rotacion(capsula). heroe.AddComponent <Heroe>(); Rigidbody rgbdy1 = heroe.AddComponent <Rigidbody>(); rgbdy1.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ; heroe.tag = "Heroe"; int i = Random.Range(m.min, max); //Randomizador para el numero de objetos a instanciarse. npcs = new GameObject[i + 1]; //Asignacion del tamaño a la matriz de gameobjects. //Constructor de ciudadanos y zombies. for (int j = 0; j <= i; j++) { int k = Random.Range(0, 2); //Randomizador para construccion de zombie o ciudadano. if (k == 0) { //Bloque de codigo de instanciacion de zombies. GameObject zombie = GameObject.CreatePrimitive(PrimitiveType.Cube); int col = Random.Range(0, 3); switch (col) //Switch para asignacion de color. { case 0: col = 0; break; case 1: col = 1; break; case 2: col = 2; break; } zombie.GetComponent <Renderer>().material.color = zombi.color [col]; //Asignacion de una posicion al azar para el zombie. Vector3 pos2 = new Vector3(); pos2.x = Random.Range(-10, 10); pos2.y = 0.5f; pos2.z = Random.Range(-10, 10); zombie.transform.position = pos2; zombie.tag = "Zombie"; //Asignacion de tag para el zombie. //Asignacion de scripts para disparar mensajes en colisiones. zombie.AddComponent <Heroe>(); zombie.AddComponent <Rigidbody>(); zombie.AddComponent <Zombie>(); npcs[j] = zombie; //Colocacion del gameobject en la matriz. } else { //Bloque de codigo para la instanciacion de los ciudadanos. ciudad.edad = Random.Range(15, 101); //Randomizador para la edad del ciudadano. GameObject ciudada = GameObject.CreatePrimitive(PrimitiveType.Cylinder); //Asignacion de una posicion al azar para el ciudadano. Vector3 pos3 = new Vector3(); pos3.x = Random.Range(-10, 10); pos3.y = 1f; pos3.z = Random.Range(-10, 10); ciudada.transform.position = pos3; //Asignacion del tag y el script "ciudadano", y asignacion y congelamiento del rigidbody. Rigidbody rgbdy2 = ciudada.AddComponent <Rigidbody>(); rgbdy2.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ; ciudada.tag = "Ciudadano"; ciudada.AddComponent <Ciudadano>(); npcs[j] = ciudada; //Colocacion del gameobject en la matriz. } } foreach (GameObject prim in npcs) //Loop para el conteo de ciudadanos y zombies en la escena. { if (prim.tag == "Zombie") { NZ++; //zombies. } else if (prim.tag == "Ciudadano") { NC++; //ciudadanos. } } }