public override void OnTriggerEnter(Cornerback_Controller_FSM cornerback, Collider2D other)
    {
        if (other.gameObject.tag == "Ball")
        {
            Transform ballGo = other.gameObject.transform.parent;

            //check the height of the ball
            //Debug.Log("Ball height: " + "<color=green><b> " + ballGo.transform.position.z + "</b></color>");
            bool canCatchBall = ballGo.transform.position.z <= GameManager.Instance.catchableHeight;

            //try to catch ball
            if (canCatchBall)
            {
                other.gameObject.tag = "BallCaught";

                ballGo.parent             = cornerback.transform;
                ballGo.transform.position = cornerback.transform.position;

                cornerback.TransitionToState(cornerback.ballCaught_State);
            }
            else
            {
                cornerback.TransitionToState(cornerback.cover_State);
            }
        }
    }
 public override void OnCollisionEnter(Cornerback_Controller_FSM cornerback, Collision2D other)
 {
     if (other.gameObject.tag == "Receiver")
     {
         cornerback.StartCoroutine(Release(cornerback));
     }
 }
Example #3
0
    public override void EnterState(Cornerback_Controller_FSM cornerback)
    {
        //Debug.Log("Enter push state");
        //cornerback.transform.GetComponent<BoxCollider2D>().enabled = true;

        cornerback.StartCoroutine(TriggerExitTest(cornerback));  //triggerExit Hack
    }
    IEnumerator ApplyRotation(Cornerback_Controller_FSM cornerback)
    {
        yield return(new WaitForSeconds(cornerback.reactionDelay));

        GetRotation(cornerback);

        doReact = true;
    }
 public override void OnTriggerExit(Cornerback_Controller_FSM cornerback, Collider2D other)
 {
     if (other.gameObject.tag == "Receiver")
     {
         Debug.Log("Trigger in Push State");
         cornerback.TransitionToState(cornerback.cover_State);
     }
 }
    public override void Update(Cornerback_Controller_FSM cornerback)
    {
        Vector2 localRight = cornerback.transform.rotation * Vector2.right;

        cornerback.myRb.AddForce(localRight * cornerback.speed * Time.deltaTime);

        float angle = Vector2.SignedAngle(cornerback.ballGo.transform.position - cornerback.transform.position, new Vector2(1.0f, 0.0f));

        cornerback.myRb.MoveRotation(Mathf.LerpAngle(cornerback.myRb.rotation, -angle, cornerback.rotationSpeed * Time.deltaTime));
    }
Example #7
0
 public override void OnTriggerExit(Cornerback_Controller_FSM cornerback, Collider2D other)
 {
     /*
      * something is wrong with the OnTriggerExit. The Reset somehow forces OnTriggerExit to fire
      * for now the hack is to wait a second until after the reset before we react to the event
      * however this is not a stable sollution
      */
     if (other.gameObject.tag == "Receiver" && trigger == true)
     {
         Debug.Log("Trigger in Push State");
         cornerback.TransitionToState(cornerback.cover_State);
     }
 }
    public override void OnTriggerEnter(Cornerback_Controller_FSM cornerback, Collider2D other)
    {
        //catch ball
        if (other.gameObject.tag == "Ball")
        {
            other.gameObject.tag = "BallCaught";

            Transform ballGo = other.gameObject.transform.parent;
            ballGo.parent             = cornerback.transform;
            ballGo.transform.position = cornerback.transform.position;

            cornerback.TransitionToState(cornerback.ballCaught_State);
        }
    }
    public override void Update(Cornerback_Controller_FSM cornerback)
    {
        Vector2 localRight = cornerback.transform.rotation * Vector2.right;

        cornerback.myRb.AddForce(localRight * cornerback.speed * Time.deltaTime);

        //mechanism to simulate reaction time for cornerback
        if (doReact == true)
        {
            cornerback.StartCoroutine(ApplyRotation(cornerback));
            doReact = false;
        }

        //try to intercept the ball if its in the air
        if (cornerback.qB_Controller.Receiver_current == cornerback.PlayerToCover.gameObject)
        {
            //here we make sure that onlt the right cornerback tries to intercept the ball
            if (cornerback.ball_controller.launched == true)
            {
                cornerback.TransitionToState(cornerback.intercept_State);
            }
        }
    }
    private void GetRotation(Cornerback_Controller_FSM cornerback)
    {
        float angle = Vector2.SignedAngle(cornerback.PlayerToCover.position - cornerback.transform.position, new Vector2(1.0f, 0.0f));

        cornerback.myRb.MoveRotation(-angle);
    }
 public override void CleanUp(Cornerback_Controller_FSM cornerback)
 {
 }
 public override void EnterState(Cornerback_Controller_FSM cornerback)
 {
     GetRotation(cornerback);
 }
 public override void EnterState(Cornerback_Controller_FSM cornerback)
 {
     GetRotation(cornerback);
     Debug.Log("first rotation set");
 }
Example #14
0
    //triggerExit Hack
    IEnumerator TriggerExitTest(Cornerback_Controller_FSM cornerback)
    {
        yield return(new WaitForSeconds(1));

        trigger = true;
    }
Example #15
0
 public abstract void OnTriggerExit(Cornerback_Controller_FSM cornerback, Collider2D other);
Example #16
0
 public abstract void CleanUp(Cornerback_Controller_FSM cornerback);
Example #17
0
 public abstract void EnterState(Cornerback_Controller_FSM cornerback);
Example #18
0
 public abstract void Update(Cornerback_Controller_FSM cornerback);
 public override void EnterState(Cornerback_Controller_FSM cornerback)
 {
     cornerback.speed += 2;
 }
Example #20
0
 public abstract void OnCollisionExit(Cornerback_Controller_FSM cornerback, Collision2D other);
 public override void OnCollisionExit(Cornerback_Controller_FSM cornerback, Collision2D other)
 {
 }
Example #22
0
 bool trigger = false;   //triggerExit Hack
 public override void CleanUp(Cornerback_Controller_FSM cornerback)
 {
     trigger = false;     //triggerExit Hack
 }
 public override void OnTriggerExit(Cornerback_Controller_FSM cornerback, Collider2D other)
 {
 }
Example #24
0
    IEnumerator Release(Cornerback_Controller_FSM cornerback)
    {
        yield return(new WaitForSeconds(1));

        cornerback.transform.GetComponent <BoxCollider2D>().enabled = false;
    }
 public override void CleanUp(Cornerback_Controller_FSM cornerback)
 {
     cornerback.speed -= 2;
 }
 public override void EnterState(Cornerback_Controller_FSM cornerback)
 {
     //set the Game to be reset
     GameManager.Instance.ballIntercepted = true;
 }