Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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);
        }
    }