private void JumpHandler() { if (TPCInput.GetButtonDown("Jump")) { Jump(); } }
protected virtual void CrouchHandler() { float capsuleHeight = colliderHeight; float capsuleVelociy = wasColliderVelocityCenter; if (TPCInput.GetButtonDown("Crouch") && !isCrouching) { isCrouching = !isCrouching; } else if (TPCInput.GetButtonDown("Crouch") && isCrouching) { if (!Physics.Raycast(transform.position, Vector3.up, colliderHeight)) { isCrouching = !isCrouching; } } if (isCrouching) { capsuleHeight = colliderHeight * crouchHeight; capsuleVelociy = wasColliderVelocityCenter * crouchHeight; } float lastCapsuleHeight = capsuleCollider.height; capsuleCollider.height = Mathf.Lerp(capsuleCollider.height, capsuleHeight, crouchSmooth * Time.deltaTime); float fixedVelocity = Mathf.Lerp(capsuleCollider.center.y, capsuleVelociy, crouchSmooth * Time.deltaTime); capsuleCollider.center = new Vector3(0, fixedVelocity, 0); float fixedVerticalPosition = Mathf.Lerp(transform.position.y, transform.position.y + (capsuleCollider.height - lastCapsuleHeight) / 2.0f, crouchSmooth * Time.deltaTime); transform.position = new Vector3(transform.position.x, fixedVerticalPosition, transform.position.z); }
/// <summary> /// Update is called every frame, if the MonoBehaviour is enabled. /// </summary> /// <summary> protected virtual void Update() { if (TPCInput.GetButtonDown("Grab") && !isGrabbing) { RaycastHit raycastHit; if (Physics.Raycast(_camera.position, _camera.forward, out raycastHit, grabRange, layerMask)) { grabObject = raycastHit.transform.GetComponent <GrabObject>(); if (raycastHit.rigidbody != null && !raycastHit.rigidbody.isKinematic && grabObject != null) { grabObject.transform.rotation = Quaternion.LookRotation(character.transform.forward); springJoint.transform.position = raycastHit.point; springJoint.anchor = Vector3.zero; springJoint.spring = spring; springJoint.damper = damper; springJoint.maxDistance = distance; springJoint.connectedBody = raycastHit.rigidbody; isGrabbing = true; StartCoroutine(DragObject(grabObject.Range)); } } } else if ((TPCInput.GetButtonDown("Grab") && isGrabbing) || !characterHealth.IsAlive) { inverseKinematics.SetHandIKWeight(0); grabObject = null; isGrabbing = false; } }
/// <summary> /// Cursor processing coroutine /// </summary> /// <returns>yield</returns> protected System.Collections.IEnumerator CursorProcess() { Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; while (true) { if (TPCInput.GetButtonDown("Menu") && !Cursor.visible) { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } else if (TPCInput.GetButtonDown("Menu") && Cursor.visible) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } yield return(null); } }