Exemple #1
0
    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;
    }
Exemple #2
0
    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);
    }
Exemple #3
0
 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;
     //}
 }
Exemple #4
0
    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);
        }
    }
Exemple #5
0
    public override void Enter(StatefulBehaviour behaviour)
    {
        Player player = (Player)behaviour;

        player.GetComponent <SpriteRenderer>().color = Color.yellow;

        if (player.steer.IsPursuitPuckOn())
        {
            player.steer.AbortAllMovement();
        }
    }
Exemple #6
0
 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;
    }
Exemple #9
0
    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;
            }
        }
    }
Exemple #10
0
    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;
 }
Exemple #14
0
    // Use this for initialization

    public override void Enter(StatefulBehaviour behaviour)
    {
    }
Exemple #15
0
 public override void Exit(StatefulBehaviour behaviour)
 {
     return;
 }
Exemple #16
0
    public override void Enter(StatefulBehaviour behaviour)
    {
        Player player = (Player)behaviour;

        player.team.setControllingPlayer(player);
    }
Exemple #17
0
    public override void Enter(StatefulBehaviour behaviour)
    {
        Player player = (Player)behaviour;

        player.steer.PursuitPuckOn(player.puck, 2.0f);
    }
Exemple #18
0
    public override void Enter(StatefulBehaviour behaviour)
    {
        Team team = (Team)behaviour;

        team.UpdateTargetsOfWaitingPlayers(team.attackingRegion);
    }
Exemple #19
0
    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;
        }
    }
Exemple #20
0
    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>());
            }
        }
    }
Exemple #21
0
    public override void Exit(StatefulBehaviour behaviour)
    {
        Player player = (Player)behaviour;

        player.GetComponent <SpriteRenderer>().color = Color.white;
    }
Exemple #22
0
    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);
        //}
    }