void Breed(DinoDNA parent1, DinoDNA parent2) { GameObject breeded = Instantiate(dinoPrefab, spawnPoint.position, Quaternion.identity); dinoList.Add(breeded.GetComponent <DinoDNA>().Breed(parent1, parent2)); }
public DinoDNA Breed(DinoDNA parent1, DinoDNA parent2) { rb = this.gameObject.GetComponent <Rigidbody2D>(); gameManager = GameObject.Find("GameManager").GetComponent <GameManager>(); if (Random.Range(0, 100) < gameManager.GetMutationRate()) { GenerateDNA(); } else { int r = Random.Range(0, 160); if (r <= 50) { visionChange = parent1.visionChange; } else if (r > 50 && r <= 100) { visionChange = parent2.visionChange; } else if (r > 100 && r <= 150) { visionChange = (parent1.visionChange + parent2.visionChange) / 2; } else { visionChange = Random.Range(0.5f, 0.5f); } r = Random.Range(0, 160); if (r <= 50) { visionDistance = parent1.visionDistance; } else if (r > 50 && r <= 100) { visionDistance = parent2.visionDistance; } else if (r > 100 && r <= 150) { visionDistance = (parent1.visionDistance + parent2.visionDistance) / 2; } else { visionDistance = Random.Range(gameManager.GetMinVision(), gameManager.GetMaxVision()); } r = Random.Range(0, 160); if (r <= 50) { size = parent1.size; } else if (r > 50 && r <= 100) { size = parent2.size; } else if (r > 100 && r <= 150) { size = (parent1.size + parent2.size) / 2; } else { size = Random.Range(gameManager.GetMinSize(), gameManager.GetMaxSize()); } rb.mass = size; for (int i = 0; i < action.Length; i++) { r = Random.Range(0, 110); if (r <= 50) { action[i] = parent1.action[i]; } else if (r > 50 && r <= 100) { action[i] = parent2.action[i]; } else { action[i] = Random.Range(1, 5); } } for (int i = 0; i < force.Length; i++) { r = Random.Range(0, 160); if (r <= 50) { force[i] = parent1.force[i]; } else if (r > 50 && r <= 100) { force[i] = parent2.force[i]; } else if (r > 100 && r <= 150) { force[i] = (parent1.force[i] + parent2.force[i]) / 2; } else { force[i] = Random.Range(0, 10f); } } for (int i = 0; i < timeDown.Length; i++) { r = Random.Range(0, 160); if (r <= 50) { timeDown[i] = parent1.timeDown[i]; } else if (r > 50 && r <= 100) { timeDown[i] = parent2.timeDown[i]; } else if (r > 100 && r <= 150) { timeDown[i] = (parent1.timeDown[i] + parent2.timeDown[i]) / 2; } else { timeDown[i] = Random.Range(0, 10f); } } } return(this); }