예제 #1
0
    protected virtual InteractablePlayerInput PlayerInputCheck(GameObject playerObject)
    {
        Player p = playerObject.GetComponent <Player>();

        PlayerButtonPressed useInput = p.GetUsePressed();;

        return(new InteractablePlayerInput(useInput.pressed || autoPress == true, useInput.held || autoPress == true));
    }
예제 #2
0
    public PlayerButtonPressed GetUsePressed()
    {
        string button = GetUseKey();

        PlayerButtonPressed pressed = new PlayerButtonPressed();

        pressed.held    = false;
        pressed.pressed = false;

        if (button.Equals(""))
        {
            return(pressed);
        }

        pressed.held    = Input.GetButton(button);
        pressed.pressed = Input.GetButtonDown(button);

        return(pressed);
    }
예제 #3
0
    // Update is called once per frame
    void Update()
    {
        if (mouthTransform != null)
        {
            Vector3 scale = mouthTransform.transform.localScale;
            mouthTransform.transform.localScale = new Vector3(scale.x, scale.y, Mathf.Cos(Time.time * 8) * 0.1f);
        }

        if (cube != null)
        {
            CorrectPosition();

            CorrectAngle(3);

            float movement = GetRightValue();

            if (movement > 0)
            {
                MoveRight(movement);
            }
            else if (movement < 0)
            {
                MoveLeft(-movement);
            }

            PlayerButtonPressed jumpInput = GetJumpPressed();

            if (jumpInput.pressed)
            {
                Jump();
            }
        }

        if (IsGrounded())
        {
            if (jumping)
            {
                jumping = false;
                CorrectAngle(180);
            }

            RaycastHit hit = GetGroundedHit();
            if (hit.collider != null)
            {
                Vector3 normal = new Vector3(hit.normal.x, 0, hit.normal.z);

                CorrectAngle(180, normal);
            }
        }
        else
        {
            float height = transform.position.y;

            if (jumping)
            {
                if (height > lastJumpHeight)
                {
                    float diffHeight = (jumpHeight + maxJump) - height;
                    rb.velocity = new Vector3(rb.velocity.x, diffHeight * 0.2f / Time.deltaTime, rb.velocity.z);

                    if (diffHeight < 0.1f || rb.velocity.y <= 0.1f)
                    {
                        jumping = false;
                    }
                }
            }
            else
            {
                if (GroundedTo(0.8f) == null)
                {
                    rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y - (40 * Time.deltaTime), rb.velocity.z);
                }
            }

            lastJumpHeight = height;
        }
    }