Example #1
0
    // Start is called before the first frame update
    void Start()
    {
        GameEvents.current.onMovementManagerEnter += () => { isMovementManagerActive = true; };
        GameEvents.current.onMovementManagerExit  += () => { isMovementManagerActive = false; };

        frisbeeObject  = GameObject.FindGameObjectWithTag("Frisbee");
        playerSelector = GameObject.Find("Players").GetComponent <PlayerSelector>();
        throwSide      = ThrowSide.RIGHT;
        AttachToPlayer(GameObject.Find("Player"), throwSide);
    }
Example #2
0
 private void SwitchThrowSide()
 {
     if (!isMovementManagerActive)
     {
         if (throwSide == ThrowSide.RIGHT)
         {
             throwSide = ThrowSide.LEFT;
         }
         else if (throwSide == ThrowSide.LEFT)
         {
             throwSide = ThrowSide.RIGHT;
         }
         AttachToPlayer(playerHoldingTheFrisbee, throwSide);
     }
 }
Example #3
0
        public static Vector3[] MakePath(ThrowSide side)
        {
            Vector3[] path = new Vector3[4];

            switch (side)
            {
            case ThrowSide.BOTTOM:
                path[0] = MatchController.s_instance.RandomBottomPoint();
                path[3] = MatchController.s_instance.RandomBottomPoint();
                path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                break;

            case ThrowSide.LEFT:
                path[0] = MatchController.s_instance.RandomLeftPoint();
                path[3] = MatchController.s_instance.RandomBottomRightPoint();
                path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                break;

            case ThrowSide.RIGHT:
                path[0] = MatchController.s_instance.RandomRightPoint();
                path[3] = MatchController.s_instance.RandomBottomLeftPoint();
                path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                break;

            case ThrowSide.TOP:
                path[0] = MatchController.s_instance.RandomTopPoint();
                path[3] = MatchController.s_instance.RandomTopPoint();
                path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[0].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[0].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z);
                break;

            default:
                break;
            }

            return(path);
        }
Example #4
0
    /// Attaches the frisbee to another GameObject (= player).
    public void AttachToPlayer(GameObject player, ThrowSide throwSide)
    {
        DetachFromPlayer();
        playerSelector.DeselectAllPlayers();

        state = State.AT_PLAYER;
        playerHoldingTheFrisbee = player;
        playerHoldingTheFrisbee.GetComponent <PlayerMovement>().canMove = false;

        if (throwSide == ThrowSide.RIGHT)
        {
            transform.position = playerHoldingTheFrisbee.transform.position + Vector3.right;
        }
        else if (throwSide == ThrowSide.LEFT)
        {
            transform.position = playerHoldingTheFrisbee.transform.position + Vector3.left;
        }

        FixedJoint fixedJoint = frisbeeObject.AddComponent <FixedJoint>();

        fixedJoint.connectedBody = playerHoldingTheFrisbee.GetComponent <Rigidbody>();
        fixedJoint.breakForce    = 250;
    }