// Use this for initialization void Start() { Bounds boundaries = environment.GetComponent <Renderer> ().bounds; for (int i = 0; i < pop_sze; i++) { MeeMee meemee = CreateMeemee(boundaries); pop.Add(meemee); } StartCoroutine(EvalulationLoop()); }
public MeeMee CreateMeemee(Bounds bounds) { Vector3 rndPos = new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f) * bounds.size.x, UnityEngine.Random.Range(-0.5f, 0.5f) * bounds.size.y, UnityEngine.Random.Range(-0.5f, 0.5f) * bounds.size.z); Vector3 WrldPos = environment.transform.position + rndPos; GameObject temp = GameObject.CreatePrimitive(PrimitiveType.Capsule); MeeMee meemee = temp.AddComponent <MeeMee>(); float height = temp.GetComponent <MeshFilter> ().mesh.bounds.size.y; WrldPos.y += height / 2; temp.transform.position = WrldPos; RndCol(temp); return(meemee); }
void Breed() { List <MeeMee> tempList = new List <MeeMee>(); for (int i = 1; i < pop.Count; i = i + 2) { int breederIndex1 = i - 1; int breederIndex2 = i; float split = UnityEngine.Random.Range(0.0f, 1.0f); Bounds bounds = environment.GetComponent <Renderer> ().bounds; MeeMee childMe1 = CreateMeemee(bounds); MeeMee childMe2 = CreateMeemee(bounds); tempList.Add(childMe1); tempList.Add(childMe2); if (split <= 0.16f) // 100/6 { Color tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex1].color.g, pop [breederIndex2].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex2].color.g, pop [breederIndex1].color.b); childMe2.Setcolor(Mut(tempC)); } else if (split <= 0.32f) { Color tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex2].color.g, pop [breederIndex1].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex2].color.r, pop [breederIndex1].color.g, pop [breederIndex2].color.b); childMe2.Setcolor(Mut(tempC)); } else if (split <= 0.48f) { Color tempC = new Color(pop [breederIndex2].color.r, pop [breederIndex1].color.g, pop [breederIndex1].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex2].color.r, pop [breederIndex1].color.g, pop [breederIndex1].color.b); childMe2.Setcolor(Mut(tempC)); } else if (split <= 0.64f) { Color tempC = new Color( pop [breederIndex2].color.r, pop [breederIndex1].color.g, pop [breederIndex1].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex1].color.g, pop [breederIndex2].color.b); childMe2.Setcolor(Mut(tempC)); } else if (split <= 0.8f) { Color tempC = new Color(pop [breederIndex2].color.r, pop [breederIndex2].color.g, pop [breederIndex1].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex1].color.g, pop [breederIndex2].color.b); childMe2.Setcolor(Mut(tempC)); } else { Color tempC = new Color(pop [breederIndex2].color.r, pop [breederIndex1].color.g, pop [breederIndex2].color.b); childMe1.Setcolor(Mut(tempC)); tempC = new Color(pop [breederIndex1].color.r, pop [breederIndex2].color.g, pop [breederIndex1].color.b); childMe2.Setcolor(Mut(tempC)); } } pop.AddRange(tempList); }