前提・実現したいこと
Unityで、ピンチズームやスクロール機能をつけることができるAssetを購入して Main Cameraに貼ってあります。 その中の機能に「Enable Rotation」という項目があって、 これをオンにして作ると、指でスマホの画面を回転させることができるのですが、 任意の細かな角度にまで調節できてしまい、真横、真っすぐ縦に合わせるのが難しいので、 90°毎にピタリと合うように ̠315°~45°:0° 45°~135°:90° 135°~225°:180° 225°~315°:270° というような感じにしたいです。 スクリプトをどのように編集したらいいのか教えてください。 よろしくお願いします。
該当のソースコード
C#
1 2おそらくこの辺りの部分ではないかと思うのですが、 3違っていたら、どういう箇所で回転の角度などの挙動を決めているのか教えてください。 4 5 /// Helper method for rotating a boundary box. 6 /// </summary> 7 private void RotateBoundingBox(Vector2 min, Vector2 max, float rotationDegrees, out Vector2 resultMin, out Vector2 resultMax) { 8 Vector2 v0 = new Vector2(max.x, 0); 9 Vector2 v1 = new Vector2(0, max.y); 10 Vector2 v2 = new Vector2(min.x, 0); 11 Vector2 v3 = new Vector2(0, min.y); 12 Vector2 v0Rot = RotateVector2(v0, rotationDegrees); 13 Vector2 v1Rot = RotateVector2(v1, rotationDegrees); 14 Vector2 v2Rot = RotateVector2(v2, rotationDegrees); 15 Vector2 v3Rot = RotateVector2(v3, rotationDegrees); 16 resultMin = new Vector2(Mathf.Min(v0Rot.x, v1Rot.x, v2Rot.x, v3Rot.x), Mathf.Min(v0Rot.y, v1Rot.y, v2Rot.y, v3Rot.y)); 17 resultMax = new Vector2(Mathf.Max(v0Rot.x, v1Rot.x, v2Rot.x, v3Rot.x), Mathf.Max(v0Rot.y, v1Rot.y, v2Rot.y, v3Rot.y)); 18 } 19 20 21他に該当箇所かも知れない部分です。 22 23 if (Mathf.Approximately(mouseScrollDelta, 0) == false) { 24 if(isEditorInputRotate == true) { 25 if(EnableRotation == true) { 26 Vector3 rotationAxis = GetRotationAxis(); 27 Vector3 intersectionScreenCenter = GetIntersectionPoint(Cam.ScreenPointToRay(Input.mousePosition)); 28 Transform.RotateAround(intersectionScreenCenter, rotationAxis, mouseScrollDelta * 100); 29 ComputeCamBoundaries(); 30 } 31 } else if(isEditorInputTilt == true) { 32 if(EnableTilt == true) { 33 UpdateCameraTilt(mouseScrollDelta * 100); 34 } 35 } else { 36 float editorZoomFactor = 15; 37 if (Cam.orthographic) { 38 editorZoomFactor = 15; 39 } else { 40 if (IsTranslationZoom) { 41 editorZoomFactor = 30; 42 } else { 43 editorZoomFactor = 100; 44 } 45 } 46 float zoomAmount = mouseScrollDelta * editorZoomFactor; 47 float camSizeDiff = DoEditorCameraZoom(zoomAmount); 48 Vector3 intersectionScreenCenter = GetIntersectionPoint(Cam.ScreenPointToRay(new Vector3(Screen.width * 0.5f, Screen.height * 0.5f, 0))); 49 Vector3 pinchFocusVector = GetIntersectionPoint(Cam.ScreenPointToRay(Input.mousePosition)) - intersectionScreenCenter; 50 float multiplier = (1.0f / CamZoom * camSizeDiff); 51 Transform.position += pinchFocusVector * multiplier; 52 } 53 } 54
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/01 12:04
2018/12/02 03:01
2018/12/02 03:56
2018/12/02 14:48
2018/12/03 11:49