示例#1
0
    private void Update()
    {
        transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * Time.deltaTime * mouseSensitivityX);
        verticalLookRotation    += Input.GetAxis("Mouse Y") * Time.deltaTime * mouseSensitivityY;
        verticalLookRotation     = Mathf.Clamp(verticalLookRotation, -60f, 60f);
        cameraT.localEulerAngles = Vector3.left * verticalLookRotation;

        Vector3 moveDir          = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
        Vector3 targetMoveAmount = moveDir * walkSpeed;

        moveAmount = Vector3.SmoothDamp(moveAmount, targetMoveAmount, ref smoothMoveVelocity, 0.15f);

        if (Input.GetButtonDown("Jump"))
        {
            body.GetBody().AddForce(transform.up * jumpForce);
            if (grounded)
            {
                shouldJump = true;
                body.GetBody().AddForce(transform.up * jumpForce);
            }
            else
            {
                shouldJump = false;
            }
        }
        grounded = false;
        Ray        ray = new Ray(transform.position, -transform.up);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 1 + 0.1f, groundedMask))
        {
            shouldJump = true;
            grounded   = true;
        }
    }