public override void AgentReset() { step = 0; Vector3 pos = new Vector3(Random.Range(cr_.minBound_.x, cr_.maxBound_.x), 0.5f, Random.Range(cr_.minBound_.z, cr_.maxBound_.z)); Vector3 tar = new Vector3(Random.Range(cr_.minBound_.x, cr_.maxBound_.x), 0.5f, Random.Range(cr_.minBound_.z, cr_.maxBound_.z)); agent_.init(pos, tar); cr_.setAgent(ref agent_, sw_id); gameObject.transform.position = pos; target_.transform.position = tar; }
void ResetAgents() { agents_.Clear(); foreach (var wa in walkerAgents_) { Destroy(wa); } walkerAgents_.Clear(); foreach (var tar in targetAgents_) { Destroy(tar); } targetAgents_.Clear(); for (int i = 0; i < numAgents_; i++) { float hue = (float)i / numAgents_; Color newColor = Color.HSVToRGB(hue, 1f, 1f); Color newColorDark = Color.HSVToRGB(hue, 1f, 0.5f); Vector3 pos = new Vector3(Random.Range(minBound_.x, maxBound_.x), 0.5f, Random.Range(minBound_.z, maxBound_.z)); Vector3 tar = new Vector3(Random.Range(minBound_.x, maxBound_.x), 0.5f, Random.Range(minBound_.z, maxBound_.z)); SW S = new SW(); S.init(pos, tar); agents_.Add(S); GameObject walkerClone = Instantiate(walkerPrefab_, pos, Quaternion.identity); walkerClone.GetComponent <MeshRenderer>().material.color = newColor; GameObject targetClone = Instantiate(targetPrefab_, tar, Quaternion.identity); targetClone.GetComponent <MeshRenderer>().material.color = newColorDark; if (imitationLearning) { if (i == 0) { walkerClone.GetComponent <SWAgent>().GiveBrain(TeacherBrain_.GetComponent <Brain>()); } else { walkerClone.GetComponent <SWAgent>().GiveBrain(StudentBrain_.GetComponent <Brain>()); } } else { walkerClone.GetComponent <SWAgent>().GiveBrain(SocialWalkerBrain_.GetComponent <Brain>()); } walkerClone.GetComponent <SWAgent>().sw_id = i; walkerClone.GetComponent <SWAgent>().target_ = targetClone; walkerAgents_.Add(walkerClone); targetAgents_.Add(targetClone); agentActive_.Add(true); } }