private void InputControllerOnDragStart(Vector3 dragPosStart) { if (isDraggingSceneObject == false) { cameraScrollVelocity = Vector3.zero; dragStartCamPos = Transform.position; IsDragging = true; DragCameraMoveVector.Clear(); SetTargetPosition(Transform.position); } }
private void InputControllerOnDragStop(Vector3 dragStopPos, Vector3 dragFinalMomentum) { if (isDraggingSceneObject == false) { cameraScrollVelocity = GetVelocityFromMoveHistory(); if (cameraScrollVelocity.sqrMagnitude >= autoScrollVelocityMax * autoScrollVelocityMax) { cameraScrollVelocity = cameraScrollVelocity.normalized * autoScrollVelocityMax; } timeRealDragStop = Time.realtimeSinceStartup; IsDragging = false; DragCameraMoveVector.Clear(); } }
private void UpdatePosition(float deltaTime) { if (IsDragging == true || IsPinching == true) { Vector3 posOld = Transform.position; if (IsSmoothingEnabled == true) { Transform.position = Vector3.Lerp(Transform.position, targetPositionClamped, Mathf.Clamp01(Time.deltaTime * camFollowFactor)); } else { Transform.position = targetPositionClamped; } DragCameraMoveVector.Add((posOld - Transform.position) / Time.deltaTime); if (DragCameraMoveVector.Count > momentumSamplesCount) { DragCameraMoveVector.RemoveAt(0); } } Vector2 autoScrollVector = -cameraScrollVelocity * deltaTime; Vector3 camPos = Transform.position; switch (cameraAxes) { case CameraPlaneAxes.XY_2D_SIDESCROLL: camPos.x += autoScrollVector.x; camPos.y += autoScrollVector.y; break; case CameraPlaneAxes.XZ_TOP_DOWN: camPos.x += autoScrollVector.x; camPos.z += autoScrollVector.y; break; } Transform.position = GetClampToBoundaries(camPos); }
private void InputControllerOnPinchStop() { IsPinching = false; DragCameraMoveVector.Clear(); }