public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; //if (player.Heading().x != player.team.goal.Facing().x) //{ // // we need to rotate the object // double kickingForce = 0.5; // Vector3 direction = player.Heading(); // player.puck.Kick(direction, kickingForce); //} else //{ // player.puck.Kick(player.team.goal.Facing(), maxDribbleForce); //} //MonoBehaviour.print("moving along"); //if we are close to right post then move toward that // or move toward left Vector3 dir = new Vector3(0, 0, 0); float leftPostDistance = (player.transform.position - player.team.opponent.goal.leftPost).magnitude; float rightPostDistance = (player.transform.position - player.team.opponent.goal.rightPost).magnitude; if (leftPostDistance < rightPostDistance) { dir = player.team.opponent.goal.leftPost - player.transform.position; } else { dir = player.team.opponent.goal.rightPost - player.transform.position; } player.puck.Kick(dir, maxDribbleForce); Player supportme = player.FindSupport(); supportme.ChangeState(ScriptableObject.CreateInstance <SupportAttacker>()); player.ChangeState(ScriptableObject.CreateInstance <ChasePuck>()); return; }
public override void Enter(StatefulBehaviour behaviour) { Player player = (Player)behaviour; Vector3 bestSupportingSpot = player.team.DetermineBestSupportingPosition(); player.steer.ArriveOn(bestSupportingSpot, 3.0f); player.team.setSupprotingPlayer(player); }
public override void Enter(StatefulBehaviour behaviour) { //Player player = (Player)behaviour; //if (player.puck.owner == this) //{ // //MonoBehaviour.print(string.Format("{0} tadas {1}", player.name)); // player.puck.owner = null; //} }
public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; if (player.team.isManual && player.IsManualPlayer()) { MonoBehaviour.print(string.Format("doing nothing {0}", player.name)); return; } if (player.PuckWithinReceivingRange()) { if (!player.team.isManual) { player.puck.owner = player; player.ChangeState(ScriptableObject.CreateInstance <KickPuck>()); player.steer.AbortAllMovement(); player.team.setControllingPlayer(player); } else { //MonoBehaviour.print(string.Format("manual switch {0}", player.name)); player.puck.owner = player; player.steer.AbortAllMovement(); player.team.setManualPlayer(player); } return; } if (player.IsClosestTeamMemberToPuck()) { //MonoBehaviour.print(string.Format("{0} kind of close {1}", // if its too close to goal keeper then dont go there if (!player.IsTooCloseToGoal()) { //MonoBehaviour.print(string.Format("{0} need to go behind the ball - {1}", player.name, // player.steer.state)); if (!player.steer.IsPursuitPuckOn()) { player.steer.PursuitPuckOn(player.puck, 2.0f); } } else { player.steer.AbortAllMovement(); } return; } // i dont have the ball anymore if i had it so lets wait player.ChangeState(ScriptableObject.CreateInstance <Wait>()); // in this case whoever was supporting me should also change to wait if (player.team.supportingPlayer) { player.team.setSupprotingPlayer(null); } }
public override void Enter(StatefulBehaviour behaviour) { Player player = (Player)behaviour; player.GetComponent <SpriteRenderer>().color = Color.yellow; if (player.steer.IsPursuitPuckOn()) { player.steer.AbortAllMovement(); } }
public override void Execute(StatefulBehaviour behaviour) { //Team team = (Team)behaviour;team.timeSinceLastSupportSpotCalculated++; // if (team.timeSinceLastSupportSpotCalculated > 10) // { // team.timeSinceLastSupportSpotCalculated = 0; // } // if (!team.InControl ()) { // team.ChangeState(ScriptableObject.CreateInstance<Defending>()); // return; //} }
public override void Enter(StatefulBehaviour behaviour) { //MonoBehaviour.print("arrive enter"); Player player = (Player)behaviour; if (player.team.isManual && player.IsManualPlayer()) { // do nothing and wait for the ball } //player.team.setReceiver(player); }
public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; //if (player.PuckWithinReceivingRange() || !player.team.InControl()) //MonoBehaviour.print(string.Format("{0} arrive execute", player.name)); if (player.PuckWithinGoalKeeperRange()) { //if (player.PuckWithinReceivingRange () || !player.team.InControl ()) { //MonoBehaviour.print(string.Format("puck is with me {0} yoogoo", player.name)); player.team.setReceiver(null); if (player.team.isManual) { // the current controlling player should switch back to wait //do nothing. you have the ball now so switch to manual control if (player.team.controllingPlayer != null && !player.team.controllingPlayer.goalKeeper) { player.team.controllingPlayer.ChangeState(ScriptableObject.CreateInstance <Wait>()); } player.team.setControllingPlayer(player); player.ChangeState(ScriptableObject.CreateInstance <ManualPlayer>()); player.puck.Freeze(); player.steer.AbortAllMovement(); } else { player.team.setControllingPlayer(player); Player supportme = player.FindSupport(); supportme.ChangeState(ScriptableObject.CreateInstance <SupportAttacker>()); player.ChangeState(ScriptableObject.CreateInstance <ChasePuck>()); } return; } if (player.steer.IsAtTarget()) { player.steer.AbortAllMovement(); } else { player.steer.PursuitPuckOn(player.puck, 2.0f); } if (!player.team.InControl()) { player.ChangeState(ScriptableObject.CreateInstance <Wait>()); } return; }
public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; //MonoBehaviour.print(string.Format("im in support and not my steer state is {1} ", name, player.steer.state)); if (player.steer.IsAtTarget()) { player.steer.AbortAllMovement(); player.team.setReceiver(player); // how about supporting player //player.team.setSupprotingPlayer(player); if (!player.IsThreatened()) { player.team.RequestPass(player); return; } } }
public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; //if (player.team.receiver != null || player.pitch.GoalKeeperHasPuck()) //{+ // player.ChangeState(ScriptableObject.CreateInstance<ChasePuck>()); //}+ float kickPower = 30.0f; float passPower = 20.0f; Vector3 goal = player.team.opponent.goal.center; if (!player.PuckWithinReceivingRange()) { player.team.setControllingPlayer(null); player.steer.AbortAllMovement(); player.ChangeState(ScriptableObject.CreateInstance <Wait>()); return; } if (player.team.CanShoot(player.puck.transform.position, goal, kickPower)) { Vector3 kickDirection = goal - player.puck.transform.position; player.team.setControllingPlayer(null); player.puck.Kick(kickDirection, 30.0f); player.steer.AbortAllMovement(); player.ChangeState(ScriptableObject.CreateInstance <Wait>()); return; } if (player.IsThreatened() && player.team.receiver != null) { //MonoBehaviour.print(player.team.receiver.name); //Vector3 kickDirection = player.puck.transform.position - player.team.receiver.GetTarget(); Vector3 kickDirection = player.team.receiver.transform.position - player.puck.transform.position; //if (player.team.goal.facing.x == -1) //{ // //if receiver is behind me // if (player.team.receiver.transform.position.x > puck.transform.position.x) // { // kickDirection = player.team.receiver.transform.position - puck.transform.position // + new Vector3(0.4f, 0, 0); // } else // { // kickDirection = player.team.receiver.transform.position - puck.transform.position // - new Vector3(0.1f, 0, 0); // } //} else //{ // //if receiver is behind me // if (player.team.receiver.transform.position.x < puck.transform.position.x) // { // kickDirection = player.team.receiver.transform.position - puck.transform.position // - new Vector3(0.4f, 0, 0); // } // else // { // kickDirection = player.team.receiver.transform.position - puck.transform.position // + new Vector3(0.4f, 0, 0); // } //} player.team.setControllingPlayer(player); MonoBehaviour.print(string.Format("passing the ball to {0}", player.team.receiver.name)); player.puck.Kick(kickDirection, passPower); player.steer.AbortAllMovement(); player.team.receiver.ChangeState(ScriptableObject.CreateInstance <ReceivePuck>()); player.ChangeState(ScriptableObject.CreateInstance <Wait>()); //player.ChangeState(ScriptableObject.CreateInstance<SupportAttacker>()); //Player supportme = player.FindSupport(); //supportme.ChangeState(ScriptableObject.CreateInstance<SupportAttacker>()); } else { player.steer.AbortAllMovement(); Player supportme = player.FindSupport(); if (player.team.supportingPlayer == supportme) { supportme.steer.ArriveOn(player.team.DetermineBestSupportingPosition(), 3.0f); } supportme.ChangeState(ScriptableObject.CreateInstance <SupportAttacker>()); player.ChangeState(ScriptableObject.CreateInstance <MoveAlong>()); } }
public override void Exit(StatefulBehaviour behaviour) { //Player player = (Player)behaviour; //player.team.setReceiver(null); //player.team.setSupprotingPlayer(null); }
public virtual void Execute(StatefulBehaviour behaviour) { return; }
public virtual void Enter(StatefulBehaviour behaviour) { return; }
// Use this for initialization public override void Enter(StatefulBehaviour behaviour) { }
public override void Exit(StatefulBehaviour behaviour) { return; }
public override void Enter(StatefulBehaviour behaviour) { Player player = (Player)behaviour; player.team.setControllingPlayer(player); }
public override void Enter(StatefulBehaviour behaviour) { Player player = (Player)behaviour; player.steer.PursuitPuckOn(player.puck, 2.0f); }
public override void Enter(StatefulBehaviour behaviour) { Team team = (Team)behaviour; team.UpdateTargetsOfWaitingPlayers(team.attackingRegion); }
public override void Execute(StatefulBehaviour behaviour) { // -1.16 0.61 // go to right or left to follow the ball // float fast = 2.0f; Player player = (Player)behaviour; //if (player.steer.IsArriveOn()) //{ // if(player.steer.IsAtTarget()) // { // player.steer.AbortAllMovement(); // } //} // if ball is moving too fast then we should also move faster if (player.puck.GetComponent <Rigidbody2D>().velocity.x > 1) { fast = 4.0f; } if (player.puck.transform.position.y > player.transform.position.y && player.transform.position.y < player.team.goal.leftPost.y) { //MonoBehaviour.print(string.Format("{0} goal keeper moving up", player.name)); player.transform.Translate(Vector3.up * Time.deltaTime * fast); } if (player.puck.transform.position.y < player.transform.position.y && player.transform.position.y > player.team.goal.rightPost.y) { //MonoBehaviour.print(string.Format("{0} goal keeper moving down", player.name)); player.transform.Translate(Vector3.down * Time.deltaTime * fast); } // what if some how we moved out of the zone if (player.transform.position.y > player.team.goal.rightPost.y) { player.transform.Translate(Vector3.down * Time.deltaTime * fast); } if (player.transform.position.y < player.team.goal.leftPost.y) { player.transform.Translate(Vector3.up * Time.deltaTime * fast); } if (player.PuckWithinGoalKeeperRange()) { // i should pass the ball to someone in the team // and become controlling players until someonen receives the puck player.team.setControllingPlayer(player); if (player.team.supportingPlayer == null) { Player support = player.FindSupport(); player.team.setSupprotingPlayer(support); } Vector3 kickDirection = player.team.supportingPlayer.transform.position - player.transform.position; player.puck.Kick(kickDirection, 20.0f); player.puck.owner = player; if (player.team.receiver != null) { player.team.supportingPlayer.ChangeState(ScriptableObject.CreateInstance <ReceivePuck>()); } //MonoBehaviour.print(string.Format("gk kicked the ball to {0}", player.team.supportingPlayer.name)); return; } }
public override void Execute(StatefulBehaviour behaviour) { // cant have two manual players Player player = (Player)behaviour; if (player.steer.IsAtTarget()) { player.steer.AbortAllMovement(); } if (!player.IsManualPlayer()) { player.ChangeState(ScriptableObject.CreateInstance <Wait>()); } float walkingSpeed = 4.0f; if (player.PuckWithinReceivingRange()) { player.puck.Freeze(); } if (Input.GetKey(KeyCode.UpArrow)) { //move it up if (player.IsTooFarUp(0.5f)) { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.down * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.down * Time.deltaTime * walkingSpeed); } else { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.up * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.up * Time.deltaTime * walkingSpeed); } return; } if (Input.GetKey(KeyCode.RightArrow)) { //move it to the right if (player.IsTooFarRight(0.5f)) { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.left * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.left * Time.deltaTime * walkingSpeed); } else { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.right * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.right * Time.deltaTime * walkingSpeed); } return; } if (Input.GetKey(KeyCode.LeftArrow)) { //move it to left if (player.IsTooFarLeft(0.5f)) { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.right * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.right * Time.deltaTime * walkingSpeed); } else { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.left * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.left * Time.deltaTime * walkingSpeed); } return; } if (Input.GetKey(KeyCode.DownArrow)) { //move it to the right if (player.IsTooFarBelow(0.5f)) { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.up * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.up * Time.deltaTime * walkingSpeed); } else { if (player.PuckWithinReceivingRange()) { player.puck.owner = player; player.puck.transform.Translate(Vector3.down * Time.deltaTime * walkingSpeed * 2); player.puck.Freeze(); } player.transform.Translate(Vector3.down * Time.deltaTime * walkingSpeed); } return; } // if space is hit then shoot // if p is hit then pass // if enter is hit then shoot if (Input.GetKey(KeyCode.Return)) { if (player.PuckWithinReceivingRange()) { player.puck.Freeze(); player.puck.owner = player; player.puck.GetComponent <Rigidbody2D>().velocity = new Vector3(0, 0, 0); Vector3 kickDirection = player.team.opponent.goal.center - player.puck.transform.position; player.puck.Kick(kickDirection, 40.0f); } } if (Input.GetKey(KeyCode.P)) { if (player.PuckWithinReceivingRange()) { Player closestPlayer = player.FindClosestPlayerToMe(); closestPlayer.steer.AbortAllMovement(); player.team.setReceiver(closestPlayer); player.puck.owner = player; player.puck.GetComponent <Rigidbody2D>().velocity = new Vector3(0, 0, 0); Vector3 kickDirection = player.team.receiver.transform.position - player.puck.transform.position; player.puck.Kick(kickDirection, 20.0f); player.team.receiver.ChangeState(ScriptableObject.CreateInstance <ReceivePuck>()); } } }
public override void Exit(StatefulBehaviour behaviour) { Player player = (Player)behaviour; player.GetComponent <SpriteRenderer>().color = Color.white; }
public override void Execute(StatefulBehaviour behaviour) { Player player = (Player)behaviour; if (player.team.isManual && player.IsManualPlayer()) { //do nothing return; } // if player is not yet at the target then keep going otherwise set arrive off if (player.steer.IsAtTarget()) { player.steer.ArriveOff(); player.velocity = new Vector3(0, 0, 0); } if (player.team.InControl() && !player.IsControllingPlayer() && player.IsAheadOfAttacker()) { player.steer.AbortAllMovement(); player.team.RequestPass(player); //but this means we should also sto pthe receiver and player.team.setReceiver(player); return; } // if we are too close to the goal we should head back or at least not move if (!player.IsManualPlayer() && !player.IsTooCloseToGoal() && player.InTheField(1.0f, 1.0f)) { if (player.IsClosestTeamMemberToPuck()) { player.team.setControllingPlayer(null); //MonoBehaviour.print(string.Format("{0} tadas", player.name)); player.ChangeState(ScriptableObject.CreateInstance <ChasePuck>()); return; } //else if (player.team.InControl()) //{ // // at least make an effort and move to somewhere // // closer to the ball ( e.g move toward x or y direction at leaast) //Vector3 direction = Vector3.zero; //if (player.team.goal.facing.x == 1) //{ // direction = player.transform.position + Vector3.right; // if (player.puck.lastDirection.x < 0) // { // direction = player.transform.position + Vector3.left; // } //} //else //{ // direction = player.transform.position + Vector3.right; // if (player.puck.lastDirection.x < 0) // { // direction = player.transform.position + Vector3.left; // } //} //if (direction != Vector3.zero) //{ // player.steer.ArriveOn(direction, 1.0f); //} } //if (!player.InTheField(1.0f, 1.0f)) //{ // player.steer.ArriveOn(player.homeRegion.Center(), 1.0f); //} }