void OnTriggerEnter(Collider collision) { if (collision.gameObject.CompareTag("Player")) { GameObject player = collision.gameObject; CogsAgent agentScript = player.GetComponent(WorldConstants.agent1ID) as CogsAgent; if (agentScript == null) { agentScript = player.GetComponent(WorldConstants.agent2ID) as CogsAgent; } if (agentScript.GetTeam() == team) { for (int i = agentScript.GetCarrying() - 1; i > -1; i--) { GameObject currentTarget = agentScript.GetCarry(i); capturedTargets.Add(currentTarget); int spot = AddToFirstSpotInBase(); Vector3 position = GetPosition(spot); currentTarget.GetComponent <Target>().AddToBase(spot, team, position); agentScript.RemoveCarry(currentTarget); } } } }
// Update is called once per frame void FixedUpdate() { bool timerIsRunning = timer.GetComponent <Timer>().GetTimerIsRunning(); int base1Num = base1.GetComponent <HomeBase>().GetCaptured(); int base2Num = base2.GetComponent <HomeBase>().GetCaptured(); int agent1Carry = agent1Script.GetCarrying(); int agent2Carry = agent2Script.GetCarrying(); float agent1BaseDist = agent1Script.DistanceToBase(); float agent2BaseDist = agent2Script.DistanceToBase(); base1CountTxt.text = "[A1] " + WorldConstants.agent1ID + ": " + base1Num.ToString(); base2CountTxt.text = "[A2] " + WorldConstants.agent2ID + ": " + base2Num.ToString(); if (!timerIsRunning) { if (base1Num > base2Num) { agent1Script.SetReward(1f); agent2Script.SetReward(-1f); Debug.Log("Agent 1 wins by capture"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 1 wins"; } else if (base2Num > base1Num) { agent1Script.SetReward(-1f); agent2Script.SetReward(1f); Debug.Log("Agent 2 wins by capture"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 2 wins"; } else if (agent1Carry > agent2Carry) { agent1Script.SetReward(1f); agent2Script.SetReward(-1f); Debug.Log("Agent 1 wins by carry"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 1 wins"; } else if (agent2Carry > agent1Carry) { agent1Script.SetReward(-1f); agent2Script.SetReward(1f); Debug.Log("Agent 2 wins by carry"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 2 wins"; } else if (agent1BaseDist < agent2BaseDist && agent1Carry != 0) { agent1Script.SetReward(1f); agent2Script.SetReward(-1f); Debug.Log("Agent 1 wins by distance"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 1 wins"; } else if (agent2BaseDist < agent1BaseDist && agent2Carry != 0) { agent1Script.SetReward(-1f); agent2Script.SetReward(1f); Debug.Log("Agent 2 wins by distance"); winnerTextbox.enabled = true; winnerTextbox.text = "Agent 2 wins"; } else { agent1Script.SetReward(0f); agent2Script.SetReward(0f); Debug.Log("Draw!"); winnerTextbox.enabled = true; winnerTextbox.text = "Draw"; } if (isTraining) { Reset(); } else { StopGame(); } } }