Example #1
0
    void LocalPlayerStartSetup()
    {
        Cursor.visible = false;

        AudioListener audioListener = GetComponentInChildren <AudioListener>();
        Camera        camera        = GetComponentInChildren <Camera>();

        player2MouseLook = GetComponent <MouseLook>();
        player2Movement  = GetComponent <Movement>();

        spawn1 = new Vector3(5, 2, 0);

        if (isLocalPlayer)
        {
            camera.enabled        = true;
            audioListener.enabled = true;
        }

        if (!isLocalPlayer)
        {
            camera.enabled        = false;
            audioListener.enabled = false;
        }

        // IF this Player starts at Player 1's position
        if (transform.position == spawn1)
        {
            Cursor.visible = true;

            player2MouseLook.enabled = false;
            player2Movement.enabled  = false;

            body.GetComponent <MeshRenderer>().enabled   = false;
            body.GetComponent <SphereCollider>().enabled = false;

            CharacterController charCont = GetComponent <CharacterController>();
            charCont.enabled = false;

            transform.position = new Vector3(8, 300, 0);
            transform.Rotate(90, 0, 180);

            camera.orthographic     = true;
            camera.orthographicSize = 91;

            player1Input         = GetComponent <Player1Input>();
            player1Input.enabled = true;
        }
    }
    public void ReceiveInput(Player1Input input, float value)
    {
        switch (input)
        {
        case Player1Input.Horizontal:

            if (!forceFieldIsUp)
            {
                rb.velocity   = new Vector2(runtimePlayerStats.moveSpeed * value, rb.velocity.y);   //if we press the key that corresponds with KeyCode left, then we want the rigidbody to move to the left
                moveDirection = (value > 0.1f) ? Vector2.right :
                                (value < -0.1f) ? Vector2.left : moveDirection;


                if (dashingLeft || dashingRight)
                {
                    float leftD, rightD;
                    leftD  = dashingLeft ? 1 : 0;
                    rightD = dashingRight ? 1 : 0;
                    float dashDirection = rightD - leftD;
                    Debug.Log("DASH DIRECTION: " + dashDirection);
                    rb.velocity = new Vector2(dashDirection * dashSpeed, 0);
                }
                if (IsPlayerCloseToObstacle((GetComponent <BoxCollider2D>().size.x / 2) + 1.4f))
                {
                    rb.velocity = new Vector2(0, rb.velocity.y);
                }

                if (hasGatlingGun && justUsedRangedAttack)
                {
                    rb.velocity = new Vector2(rb.velocity.x * gatlingMovespeedMultiplier, rb.velocity.y);
                }
            }

            break;

        case Player1Input.Attack:
            if (!CanPlayerAttack())
            {
                return;
            }

            if (runtimePlayerStats.rangedAttacks)
            {
                RangedAttack();
                return;
            }

            if (runtimePlayerStats.meleeAttacks)
            {
                MeleeAttack();
                return;
            }


            break;

        case Player1Input.Jump:

            if (isGrounded && !forceFieldIsUp)
            {
                audioList.PlayWithVariablePitch(audioList.jump);
                rb.AddForce(runtimePlayerStats.jumpForce * Vector2.up, ForceMode2D.Impulse);
            }
            break;

        case Player1Input.JumpHold:
            if (value == 1)
            {
                isHoldingJump = true;
            }
            else
            {
                isHoldingJump = false;
            }
            break;

        case Player1Input.DoubleTapLeft:
            if (isGrounded || dashOnCooldown)
            {
                return;
            }
            dashingLeft    = true;
            dashOnCooldown = true;
            //dashTimer = 0;
            break;

        case Player1Input.DoubleTapRight:
            if (isGrounded || dashOnCooldown)
            {
                return;
            }
            dashingRight   = true;
            dashOnCooldown = true;
            //dashTimer = 0;
            break;

        case Player1Input.Explosion:
            explosionEvent.Raise();
            break;

        case Player1Input.StopForceField:
            if (forceFieldIsUp && timeUntilForceFieldIsReady <= 0)
            {
                ToggleForceField(false);
            }
            break;

        case Player1Input.UseForceField:
            if (isGrounded && timeUntilForceFieldIsReady <= 0)
            {
                if (forcefieldInstance == null)
                {
                    rb.velocity = Vector2.zero;
                    ToggleForceField(true);
                }
            }

            break;
        }
    }