Exemplo n.º 1
0
        public void UpdateRanks(bool penalize)
        {
            Last = agents[0];
            int n = agents.Count;

            for (int i = 1; i < n; i++)
            {
                if (Mathf.DeltaAngle(Last.Degrees, agents[i].Degrees) < 0)
                {
                    Last = agents[i];
                }
            }

            Vector3 pos = Last.transform.position;

            foreach (MotorcycleAgent agent in agents)
            {
                agent.Compare = (agent.transform.position - pos).sqrMagnitude;
            }
            agents.Sort(comparer);

            First = agents[n - 1];
            for (int i = 0; i < n; i++)
            {
                if (penalize && agents[i].Rank > i)
                {
                    // Debug.Log($"Rank change: {agents[i].name} {agents[i].Rank} -> {i}");
                    agents[i].AddReward(-loseRankPenalty);
                }
                agents[i].Rank = i;
            }
        }
Exemplo n.º 2
0
 private void Awake()
 {
     if (agent == null)
     {
         agent = FindObjectsOfType <MotorcycleAgent>()[0];
     }
     physics = agent.GetComponent <ArcadePhysics>();
 }
Exemplo n.º 3
0
 public void AddAgent(MotorcycleAgent agent)
 {
     if (agents == null)
     {
         agents = new List <MotorcycleAgent>();
         Academy.Instance.AgentPreStep += OnAgentPreStep;
     }
     agents.Add(agent);
 }