マウスをドラッグした距離の分だけ、メインカメラを回転させるように、スクリプトを作成しましょう。
中央にCubeオブジェクトを映すMainCamera。
ドラッグすると、その長さによって、カメラの回転角度が変わります。
関連記事:
ドラッグした方向へ飛ばす
MainCameraで四方向から撮影
ドラッグの距離をパワー数値に変換する
マウスカーソルを追って360度回転するカメラ
キーを押すたびにカメラアングルを切り替え
カメラを360度回転させて発射
カメラを旋回しながら自動追従させる
円を描くように移動する
Vector3型の数値をfloatに変換
カメラに映るCubeを作成します。
このCubeをターゲットとして、常に中央に映るようにカメラを旋回させます。
CameraDirection.csを作成し、MainCameraに追加します。
CameraDirection.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraDirection : MonoBehaviour { [SerializeField] GameObject target; public Vector3 downPosition; public Vector3 upPosition; public float distance; void Update () { if (Input.GetMouseButtonDown(0)) { downPosition.x = Input.mousePosition.x; } if (Input.GetMouseButtonUp(0)) { upPosition.x = Input.mousePosition.x; CameraRotate(); } } void CameraRotate() { distance = upPosition.magnitude - downPosition.magnitude; //RotateAround(中心の場所,回転軸,回転角度) transform.RotateAround (target.transform.position, Vector3.up, distance/10); } } |
ターゲットのフィールドに、Cubeを追加します。
ゲームプレイしてみましょう。
マウスをドラッグした距離の分だけ、カメラが左右に回転します。
今回は、MouseDownと、MouseUpのタイミングで、それぞれのカーソル位置を取得。
カーソル位置はVector3型なので、Vector3.magnitudeを使うと、float型に変換できます。
カメラの回転量は、transform.RotateAroundの、回転角度に反映しています。
関連記事:
ドラッグした方向へ飛ばす
MainCameraで四方向から撮影
ドラッグの距離をパワー数値に変換する
マウスカーソルを追って360度回転するカメラ
キーを押すたびにカメラアングルを切り替え
カメラを360度回転させて発射
カメラを旋回しながら自動追従させる
円を描くように移動する