// Update is called once per frame void Update() { float speedMagnitude = controller.Vel.magnitude; // bob logic float desiredScale = controller.MidAir ? 0 : Mathf.Min(speedMagnitude / controller.speed, 1); _speedJumpLerp = PrintUtil.Damp(_speedJumpLerp, desiredScale, transitionLambda, Time.deltaTime); float desiredSprintScale = controller.MidAir ? 0 : Mathf.Clamp(speedMagnitude / controller.speed - 1, 0, 1); _sprintLerp = PrintUtil.Damp(_sprintLerp, desiredSprintScale, transitionLambda, Time.deltaTime); // update distance moved _distanceMoved += speedMagnitude * Time.deltaTime; // walking animation float bounce = (Mathf.Abs(Mathf.Sin(_distanceMoved * bobSpeed / controller.speed)) * bobHeight - _halfBobHeight) * _speedJumpLerp; float shift = (Mathf.Cos(_distanceMoved * bobSpeed / controller.speed) * shiftWidth - _halfShiftWidth) * _sprintLerp; _rotXShift = PrintUtil.Damp(_rotXShift, -controller.DRotY * sway / Time.deltaTime, swayLambda, Time.deltaTime); _rotYShift = PrintUtil.Damp(_rotYShift, controller.DRotX * sway / Time.deltaTime, swayLambda, Time.deltaTime); // vert velocity shift float desiredVerticalShift = controller.MidAir ? Mathf.Clamp(controller.Vel.y * verticalVelocityInfluence, -verticalInfluenceClamp, verticalInfluenceClamp) : 0; _verticalVelocityShift = PrintUtil.Damp(_verticalVelocityShift, desiredVerticalShift, transitionLambda, Time.deltaTime); transform.localPosition = new Vector3(shift + _rotXShift, bounce + _rotYShift, 0); transform.position += new Vector3(0, _verticalVelocityShift, 0); }
void Update() { // rotation _cameraKickRot *= (Quaternion.SlerpUnclamped(Quaternion.identity, _cameraKickVel, Time.deltaTime)); _cameraKickVel = PrintUtil.Damp(_cameraKickVel, Quaternion.identity, kickVelLambda, Time.deltaTime); _cameraKickRot = PrintUtil.Damp(_cameraKickRot, Quaternion.identity, kickLambda, Time.deltaTime); // position _cameraBouncePos += _cameraBounceVel * Time.deltaTime; _cameraBounceVel = PrintUtil.Damp(_cameraBounceVel, Vector3.zero, bounceVelLambda, Time.deltaTime); _cameraBouncePos = PrintUtil.Damp(_cameraBouncePos, Vector3.zero, bounceLambda, Time.deltaTime); }
void CameraMovement() { Vector2 deltaAim = m_Aim.ReadValue <Vector2>(); _dRotX = (invertMouseY ? 1 : -1) * deltaAim.y * sensitivity; _lookX += _dRotX; _lookX = Mathf.Clamp(_lookX, -90, 90); _dRotY = deltaAim.x * sensitivity; _lookY += _dRotY; cam.transform.localRotation = Quaternion.Euler(_lookX, _lookY, 0) * kickController.CameraKickRot; // move camera ahead a bit if grounded _cameraXZPos = !_midAir && cameraVelocityShift ? PrintUtil.Damp(_cameraXZPos, new Vector2(_vel.x, _vel.z) *cameraVelocityShiftScale, 10f, Time.deltaTime) : PrintUtil.Damp(_cameraXZPos, Vector2.zero, 10f, Time.deltaTime); cam.transform.localPosition = _initialCameraPos + new Vector3(_cameraXZPos.x, 0, _cameraXZPos.y); cam.transform.position += kickController.CameraBouncePos; }