private GameObject[] sense(string p_type) { GameObject[] all_of_type = ObjectLogger.getByType(p_type); List <GameObject> in_arc = new List <GameObject>(); foreach (GameObject ob in all_of_type) { if (ob == null) { continue; } Vector3 diff = ob.transform.position - gameObject.transform.position; if (Vector2Calc.checkAngle(diff, m_forward, m_sense_angle) && diff.magnitude <= m_sense_proximity) { in_arc.Add(ob); } } // foreach(GameObject ob in in_arc){ // Debug.DrawLine(gameObject.transform.position, ob.transform.position, Color.cyan, 1f); // } return(in_arc.ToArray()); }
void Start() { //Instantiate controller m_evolution = new DNABasedEvolutionManager <MindBodyDNDNA <ResourceFightDNCreature> >( new MindBodySpeciesDN <ResourceFightDNCreature>(0, new TraitGenesSpecies(0, new HashSet <string> { "SPEED", "HEALTH", "DAMAGE", "ENERGY", "ATTACKSPEED" }, 1, new Range <float>(2f, 2f), 0, new Range <float>(0f, 0f)), new DecisionNetSpecies <ResourceFightDNCreature>(0, ResourceFightDNCreature.getInputFactorys(), ResourceFightDNCreature.getOutputFactorys(), new Range <float>(0.8f, 1.2f)) ), 0.1f, 20, (float p_fitness) => { return(p_fitness * 0.95f); }, 1f ); //Fill with 20 random for (int i = 0; i < 10; i++) { m_evolution.addRandom(); } //Instantaite Interval and Listeners m_interval = new IntervalEventManager(); for (int i = 0; i < 5; i++) { spawnResource(); } for (int i = 0; i < 50; i++) { spawnCreature(); } // spawnCreature(); // spawnCreature(); m_interval.addListener(5f, () => { for (int i = 0; i < 5; i++) { spawnCreature(); } }); m_interval.addListener(10f, () => { for (int i = 0; i < 1; i++) { spawnResource(); } }); m_interval.addListener(30f, () => { GameObject[] obs = ObjectLogger.getByType("CREATURE"); foreach (GameObject ob in obs) { ob.GetComponent <ResourceFightDNCreature>().logFitness(); } }); }