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; } }
private void Awake() { if (agent == null) { agent = FindObjectsOfType <MotorcycleAgent>()[0]; } physics = agent.GetComponent <ArcadePhysics>(); }
public void AddAgent(MotorcycleAgent agent) { if (agents == null) { agents = new List <MotorcycleAgent>(); Academy.Instance.AgentPreStep += OnAgentPreStep; } agents.Add(agent); }