Unityスクリプト_04

Last-modified: 2024-01-01 (月) 12:47:30


マウスから値を受け取る(GetAxis)

h = Input.GetAxis("Mouse X");
v = Input.GetAxis("Mouse Y");
  • きちんとスペースを入れること

マウスを回転させたときにカメラを回転させる(Quaternion)

  • 最初に「public Vector2 rotationSpeed; //回転するスピード」を宣言している
    • x軸がvertical、y軸がhorizontalになる仕様らしいので注意(理由は調査中)
      • それぞれ、どの軸を「起点にするか」ということらしい
           private void CameraMove()
           {
               horizontal = Input.GetAxis("Mouse X");
               vertical = Input.GetAxis("Mouse Y");
               h += horizontal * rotationSpeed.x;
               v += vertical * rotationSpeed.y;
               transform.rotation = Quaternion.Euler(v, h, 0f);
           }

反転させる

// 回転する方向、反転させるか否かを決定する
public bool reverseX;
public bool reverseY;

上記をあらかじめ宣言しておくこと

  • if文より下が追加部分
       private void CameraMove()
       {
           horizontal = Input.GetAxis("Mouse X");
           vertical = Input.GetAxis("Mouse Y");
           h += horizontal * rotationSpeed.x;
           v += vertical * rotationSpeed.y;
           transform.rotation = Quaternion.Euler(v, h, 0f);
           if(reverseX == true)
           {
               transform.rotation = Quaternion.Euler(-v, h, 0f);
           }
           if(reverseY == true)
           {
               transform.rotation = Quaternion.Euler(v, -h, 0f);
           }
       }

マウスカーソルの表示と非表示を入れ替える

// マウスカーソルを非表示にする
Cursor.visible = false;
// マウスカーソルを表示する
Cursor.visible = true;

マウスカーソルの表示と非表示を切り替えるだけであれば、bool型の変数を入れ替えるときと同じ要領で指示が可能

Cursor.visible = !Cursor.visible;

マウスカーソルが表示されている間は、カメラを動かさない

コントロールキーでマウスカーソルの表示と非表示を切り替える

   private void CursorVisible()
   {
       // 左右どちらかのコントロールキーが押されたとき
       if (Input.GetKeyDown(KeyCode.LeftControl) || Input.GetKeyDown(KeyCode.RightControl))
       {
           // カーソルの表示と非表示を切り替える
           Cursor.visible = !Cursor.visible;
       }
   }

なお、Update()の中には以下の記述をする

  • 「CursorVisible」は上記「コントロールキーでマウスカーソルの表示と非表示を切り替える」のメソッド
  • 「CameraMove」はカメラを動かすためのメソッド
       void Update()
       {
           CursorVisible();
           // マウスカーソルが非表示のとき、カメラが動く
           if (!Cursor.visible)
           {
               Cursor.lockState = CursorLockMode.Locked; // カーソルを画面中央にロックする
               CameraMove();
           }
           else
           {
               Cursor.lockState = CursorLockMode.None; // カーソルを自由に動かせる
           }
       }
  • !Cursor.visible:「!」は戻り値がtrueかfalseのみのときに使用できる(意味は「ひっくり返す」)

マウスカーソル設定の種類

Cursor.visible:カーソルの表示と非表示をtrueとfalseで決定する
Cursor.lockState = CursorLockMode.None;:カーソルを自由に動かす
Cursor.lockState = CursorLockMode.Locked;:カーソルを画面中央に固定
Cursor.lockState = CursorLockMode.Confined;:カーソルが画面外に出ないようにする