public void FixedUpdate() { /* First find the position of the ball on the x axis and than compare it * with the state boundary which is the point where the states meet. * There is no need to make different states for the y axis since * the AI should change its behaviour based on how far away/close he is * from its own and from the opponents goal. */ AIBasicBehaviour.Sprint(player, 0); xPos = ball.transform.position.x; if (xPos >= boundary) { defendState.Run(); } else if (xPos < boundary && xPos > 0) { tackleState.Run(); } else if (xPos < 0 && xPos > -boundary) { attackState.Run(); } else if (xPos <= -boundary) { shootState.Run(); } }
public new void RunOnePosition() { /* OGoal | AI | Ball | Player | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { AIBasicBehaviour.Sprint(player, 1); if (AICheckBehaviour.CheckIfCloseToPickup(GetActivePickups(), player)) { AIMovementBehaviour.LookAt(player, AICheckBehaviour.GetClosestPickup(GetActivePickups(), GetActiveCount(), player)); AIMovementBehaviour.MoveForward(player); } else { AIMovementBehaviour.LookAt(player, opponent); AIBasicBehaviour.UseGun(player); AIMovementBehaviour.MoveTowards(player, ball); } } else { AIBasicBehaviour.Sprint(player, 1); AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }
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 RunThreePosition() { /* OGoal | Player, AI | Ball | AIGoal */ AIBasicBehaviour.Sprint(player, 1); AIGlobalBehaviour.PositionAndShoot(player, ball, goal); }
public new void RunTwoPosition() { /* OGoal | Player | Ball | 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 { AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } } else { if (AICheckBehaviour.CheckIfBallApproaching(player, ball)) { AIBasicBehaviour.UseShield(player); } AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }
public new void RunTwoPosition() { /* OGoal | Player | Ball | AI | AIGoal */ if (AICheckBehaviour.FarFromBall(player, ball)) { AIBasicBehaviour.Sprint(player, 1); AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } else { if (AICheckBehaviour.CheckIfBallApproaching(player, ball)) { AIBasicBehaviour.UseShield(player); } AIGlobalBehaviour.PositionAndShoot(player, ball, goal); } }
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); } }