Exemplo n.º 1
0
    private void SprintManager()
    {
        bool wantToSprint = false;

        if (keySprintHold.GetKey())
        {
            wantToSprint = true;
        }
        if (keySprintHold.GetKeyUp())
        {
            wantToSprint = false;
        }
        if (keySprintToggle.GetKeyDown())
        {
            wantToSprint = !wasSprinting;
        }
        if (wantToSprint && gotMoveInput && !isCrouching)
        {
            isSprinting = true;
        }
        else
        {
            isSprinting = false;
        }
        wasSprinting = isSprinting;
    }
Exemplo n.º 2
0
    private void CrouchManager()
    {
        bool isGoingToCrouch = wasCrouching;

        if (keyCrouchHold.GetKey())
        {
            isGoingToCrouch = true;
        }
        if (keyCrouchHold.GetKeyUp())
        {
            isGoingToCrouch = false;
        }
        if (keyCrouchToggle.GetKeyDown())
        {
            isGoingToCrouch = !wasCrouching;
        }
        if (!isGoingToCrouch && wasCrouching)
        {
            Vector3    rayOrigin = transform.position + (Vector3.up * col.height / 2f);
            float      rayLength = normalHeight - (col.height / 2f);
            RaycastHit hit;
            if (Physics.Raycast(rayOrigin, Vector3.up, out hit, rayLength, layermaskPlayer))
            {
                if (hit.collider.gameObject.layer != layerWater)
                {
                    isGoingToCrouch = true;
                    Debug.LogWarning("crouchcast hit " + hit.collider.name + ", layer " + LayerMask.LayerToName(hit.collider.gameObject.layer));
                }
            }
        }
        isCrouching = isGoingToCrouch;
        if (isCrouching && col.height > crouchHeight)
        {
            col.height = crouchHeight;
            col.center = new Vector3(0f, crouchHeight / 2f, 0f);
            head.transform.localPosition         = new Vector3(0f, crouchEyeLevel, 0f);
            waterTrigger.transform.localPosition = new Vector3(0f, crouchWaterTriggerPos, 0f);
            if (!isGrounded)
            {
                transform.position = transform.position + (Vector3.up * (normalHeight - crouchHeight) / 2f);
            }
        }
        if (!isCrouching && col.height < normalHeight)
        {
            col.height = normalHeight;
            col.center = new Vector3(0f, normalHeight / 2f, 0f);
            head.transform.localPosition         = new Vector3(0f, normalEyeLevel, 0f);
            waterTrigger.transform.localPosition = new Vector3(0f, normalWaterTriggerPos, 0f);
            if (!isGrounded)
            {
                transform.position = transform.position + (Vector3.down * (normalHeight - crouchHeight) / 2f);
            }
        }
        wasCrouching = isCrouching;
    }
Exemplo n.º 3
0
    //utility

    void ManageToggleAndHoldInput(ref bool value, DoubleKey keyHold, DoubleKey keyToggle)
    {
        if (keyHold.GetKey())
        {
            value = true;
        }
        if (keyHold.GetKeyUp())
        {
            value = false;
        }
        if (keyToggle.GetKeyDown())
        {
            value = !value;
        }
    }