public new void RunThreePosition() { /* OGoal | Player, AI | Ball | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { AIBasicBehaviour.Sprint(player, 1); if (AICheckBehaviour.CheckIfCloseToOpponent(player, opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseSword(player); AIMovementBehaviour.MoveTowards(player, ball); } else if (AICheckBehaviour.CheckOpponentsHealth(opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseGun(player); AIMovementBehaviour.MoveTowards(player, ball); } else { AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } } else { AIBasicBehaviour.Sprint(player, 1); // Move towards the ball as fast as possible. AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }
public new void RunTwoPosition() { /* OGoal | Player | Ball | AI | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { if (AICheckBehaviour.CheckIfCloseToOpponent(player, opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseSword(player); AIMovementBehaviour.MoveTowards(player, ball); } else if (AICheckBehaviour.CheckOpponentsHealth(opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseGun(player); AIMovementBehaviour.MoveTowards(player, ball); } else { AIMovementBehaviour.LookAt(player, ball); AIBasicBehaviour.UseGun(player); AIMovementBehaviour.MoveTowards(player, ball); } } else { if (AICheckBehaviour.CheckIfBallApproaching(player, ball)) { AIBasicBehaviour.UseShield(player); } AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }
public static void ShootInTheMiddle(GameObject player, GameObject ball, GameObject goal) { /* Same as ShootAtGoal method but this time the player kicks the towards the middle of * the football pitch. */ Vector2 goalDirection = AIDirectionBehaviour.FindPositionOf(ball, goal, 0.9f); AIMovementBehaviour.LookAt(player, ball); if (AICalculate.CalculateLengthBetween(player, ball.transform.position.x, ball.transform.position.y) < 2) // If player is close to the ball { if (AICalculate.CalculateLengthBetween(player, goalDirection.x, goalDirection.y) > 0.3) { PositionInFrontOf(player, ball, goal); } else { AIMovementBehaviour.LookAt(player, player.transform.position.x, player.GetComponent <PlayerController>().globalSettings.stateBoundary); AIBasicBehaviour.UseSword(player); } } else { AIMovementBehaviour.MoveForward(player); } }
// Should be used as the default behaviour. public static void PositionAndShoot(GameObject player, GameObject ball, GameObject goal) { /* First a position of the goal is found, then player is rotated to face the ball. * Next distance from the player to the point from which he would be able to shoot is found. * Then the player is moved closer to it or uses a sword to shot at the goal. */ AIMovementBehaviour.LookAt(player, ball); Vector2 goalDirection = AIDirectionBehaviour.FindPositionOf(ball, goal, 0.9f); // The point where player should position itself if (AICalculate.CalculateLengthBetween(player, ball.transform.position.x, ball.transform.position.y) < 2) // If player is close to the ball { if (AICalculate.CalculateLengthBetween(player, goalDirection.x, goalDirection.y) > 0.3) { PositionInFrontOf(player, ball, goal); } else { AIBasicBehaviour.UseSword(player); } } else { AIMovementBehaviour.MoveForward(player); } }
public new void RunZeroPosition() { /* OGoal | Ball | Player, AI | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { AIBasicBehaviour.Sprint(player, 1); if (aIController.lineOfSight.CheckIfBallSpotted()) { AIMovementBehaviour.LookAt(player, ball); AIBasicBehaviour.UseGun(player); AIMovementBehaviour.MoveTowards(player, ball); } else if (AICheckBehaviour.CheckIfCloseToPickup(GetActivePickups(), player)) { AIMovementBehaviour.LookAt(player, AICheckBehaviour.GetClosestPickup(GetActivePickups(), GetActiveCount(), player)); AIMovementBehaviour.MoveForward(player); } else { AIGlobalBehaviour.PositionAndShoot(player, ball, aIController.lineOfSight.GetAvailablePoint()); } } else { if (AICheckBehaviour.CheckIfCloseToOpponent(player, opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseSword(player); } else if (AICheckBehaviour.CheckOpponentsHealth(opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseGun(player); } AIGlobalBehaviour.PositionAndShoot(player, ball, aIController.lineOfSight.GetAvailablePoint()); } }
public new void RunThreePosition() { /* OGoal | Player, AI | Ball | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { if (AICheckBehaviour.CheckIfCloseToOpponent(player, opponent)) { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseSword(player); } AIBasicBehaviour.Sprint(player, 1); AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseGun(player); AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } else { AIBasicBehaviour.Sprint(player, 1); AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }