public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant) { if (instant) { currentPivotDistance = distance; } }
public override void UpdateCamera(ref LogicCameraInfo cameraInfo) { Vector3 hitPosition; bool collidedBack = CollisionFromHeadToPosition(cameraInfo.targetPosition, cameraInfo.CameraPosition(), out hitPosition); float targetPivotDistance; if (collidedBack) { targetPivotDistance = (hitPosition - cameraInfo.targetPosition).magnitude; } else { targetPivotDistance = cameraInfo.pivotDistance; } targetPivotDistance = Mathf.Clamp(targetPivotDistance, minDistance, float.MaxValue); if (cameraInfo.cameraSwitched) { currentPivotDistance = targetPivotDistance; cameraInfo.pivotDistance = currentPivotDistance; } else { float lerpSpeed = targetPivotDistance > currentPivotDistance ? moveOutLerpSpeed : moveInLerpSpeed; currentPivotDistance = Mathf.Lerp(currentPivotDistance, targetPivotDistance, Time.deltaTime * lerpSpeed); cameraInfo.pivotDistance = currentPivotDistance; } }
public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot) { Vector3 eulerAngles = new Vector3(targetPivot.x, targetPivot.y, 0); eulerAngles.x = ClampAngle(eulerAngles.x, minimumVerticalAngle, maximumVerticalAngle); cameraInfo.pivotRotation.eulerAngles = eulerAngles; }
public override void UpdateCamera(ref LogicCameraInfo cameraInfo) { foreach (var logicCamera in cameras) { logicCamera.UpdateCamera(ref cameraInfo); } }
public override void UpdateCamera(ref LogicCameraInfo cameraInfo) { cameraInfo.useSourcePosition = true; cameraInfo.sourcePosition = transform.position; cameraInfo.useTargetPosition = true; cameraInfo.targetPosition = cameraInfo.sourcePosition + transform.rotation * new Vector3(0, 0, 1); }
public override void OnCameraSwitch(LogicCameraInfo cameraInfo) { foreach (var logicCamera in cameras) { logicCamera.OnCameraSwitch(cameraInfo); } }
public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant) { cameraInfo.pivotDistance = distance; if (instant) { cameraDistance = distance; } targetCameraDistance = distance; }
public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot) { foreach (var logicCamera in cameras) { if (logicCamera is PivotCamera) { logicCamera.SetCameraPivot(ref cameraInfo, targetPivot); } } }
public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant) { foreach (var logicCamera in cameras) { if (logicCamera) { logicCamera.SetCameraPivotDistance(ref cameraInfo, distance, instant); } } }
public override void UpdateCamera(ref LogicCameraInfo cameraInfo) { DebugUtilities.Assert(logicCamera != null, "LogicCamera can not be null for player camera"); if (Time.deltaTime < 0.000001) { return; } logicCamera.UpdateCamera(ref cameraInfo); /* * var headOffset = new Vector3(); * const float headRadius = 2.0f; * const float headHeight = 0.8f; * if (cameraInfo.pivotDistance < headRadius) * { * headOffset.y = ((headRadius - cameraInfo.pivotDistance) / headRadius) * headHeight; * } * */ }
public override void UpdateCamera(ref LogicCameraInfo info) { // info.targetVelocity.y = 0; // var cameraRelativeVelocity = Quaternion.Inverse(info.PivotRotation()) * info.targetVelocity; // if (info.cameraSwitched) // { // Debug.Log("Camera SWITCHED!"); // distanceRubberBandStrength = 0; // pivotDistance = 0; // } // distanceRubberBandStrength += Mathf.Abs(cameraRelativeVelocity.z * Time.deltaTime * 0.05f); // distanceRubberBandStrength *= 0.98f; // distanceRubberBandStrength = Mathf.Clamp(distanceRubberBandStrength, 0.0f, 1.0f); //// Debug.Log("RubberBand:" + distanceRubberBandStrength); // pivotDistance += (1.0f - distanceRubberBandStrength) * cameraRelativeVelocity.z * Time.deltaTime; // pivotDistance *= 0.98f; // info.pivotDistance += pivotDistance; // float timedDistance = info.pivotDistance * Time.deltaTime; // if (timedDistance < 0.0001f) // { // return; // } // offsetRubberBandStrength += Mathf.Abs(cameraRelativeVelocity.x / timedDistance); // offsetRubberBandStrength *= 0.98f; // offsetRubberBandStrength = Mathf.Clamp(offsetRubberBandStrength, 0.0f, 1.0f); //// Debug.Log("RubberBandOffset:" + offsetRubberBandStrength); // pivotOffset -= (1.0f - offsetRubberBandStrength) * cameraRelativeVelocity.x * Time.deltaTime; // pivotOffset *= 0.98f; // info.pivotOffset += pivotOffset; // info.targetMovementFactor = Mathf.Min(Mathf.Min(offsetRubberBandStrength + distanceRubberBandStrength, 1.0f) * info.targetVelocity.magnitude * 0.6f, 1.0f); //// Debug.Log("Movement:" + info.targetMovementFactor + " offset:" + offsetRubberBandStrength + " distance:" + distanceRubberBandStrength + " velocity:" + info.targetVelocity.magnitude); }
//Linus variant för att ge en smidigare övergång från muskontroll till autorotation public override void UpdateCamera(ref LogicCameraInfo info) { //if (info.cameraSwitched) //{ // info.pivotRotationX = rotationX; // info.pivotRotationY = info.targetRotation.eulerAngles.y; // info.pivotRotationIsDefined = true; //} //rotationX = info.pivotRotationX; //if (info.pivotRotationIsDefined) //{ // currentRotationTimer = Time.time + rotateResetTime; // return; //} //if (Time.time < currentRotationTimer) //{ // return; //} //float factor = Mathf.Max(info.targetMovementFactor - 0.5f, 0) * 2.0f; //info.pivotRotationY = Mathf.LerpAngle(info.pivotRotationY, info.targetRotation.eulerAngles.y, Time.deltaTime * rotateSpeedFactor * factor); }
public override void OnCameraSwitch(LogicCameraInfo cameraInfo) { currentPivotDistance = cameraInfo.pivotDistance; }
public override void UpdateCamera(ref LogicCameraInfo cameraInfo) { targetCameraDistance += -Input.GetAxis("camera_distance") * Time.deltaTime * distanceSpeed; targetCameraDistance = Mathf.Clamp(targetCameraDistance, minimumDistance, maximumDistance); cameraDistance = Mathf.Lerp(cameraDistance, targetCameraDistance, 0.2f); cameraInfo.pivotDistance += cameraDistance; Vector3 deltaPositon = Vector3.zero; bool inputDown = false; if (SystemInfo.deviceType == DeviceType.Handheld) { if (Input.touchCount <= 0) { currentFingerId = -1; } else { Touch touch = Input.touches[0]; if (currentFingerId != touch.fingerId || touch.phase == TouchPhase.Began) { inputDownPosition = touch.position; } currentFingerId = touch.fingerId; Vector3 currentPosition = touch.position; deltaPositon = currentPosition - inputDownPosition; inputDownPosition = currentPosition; inputDown = true; } } else { if (Input.GetButtonDown("mouse0")) { inputDownPosition = Input.mousePosition; } Vector3 currentPosition = Input.mousePosition; deltaPositon = currentPosition - inputDownPosition; inputDownPosition = currentPosition; inputDown = Input.GetButton("mouse0"); } if (inputDown) { float vertical = -deltaPositon.y; float horizontal = deltaPositon.x; float addX = vertical * Time.deltaTime * verticalSpeed; float addY = horizontal * Time.deltaTime * horizontalSpeed; Vector3 eulerAngles = cameraInfo.pivotRotation.eulerAngles; eulerAngles.x += addX; eulerAngles.y += addY; eulerAngles.x = ClampAngle(eulerAngles.x, minimumVerticalAngle, maximumVerticalAngle); cameraInfo.pivotRotation.eulerAngles = eulerAngles; cameraInfo.pivotRotationIsDefined = true; } }
public abstract void OnCameraSwitch(LogicCameraInfo cameraInfo);
public override void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant) { }
public override void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot) { }
public override void OnCameraSwitch(LogicCameraInfo cameraInfo) { }
public abstract void UpdateCamera(ref LogicCameraInfo cameraInfo);
public abstract void SetCameraPivot(ref LogicCameraInfo cameraInfo, Vector2 targetPivot);
public abstract void SetCameraPivotDistance(ref LogicCameraInfo cameraInfo, float distance, bool instant);