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; }
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; }
//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; } }