今回の内容
Input.GetAxis("Mouse X")
の動きについて
Unity におけるカメラ移動ってまあ基本こいつを使っていると思います。使ってない人に関してはちょっとわからないのでスルーしてください。
こいつの働きは、ジョイスティック、キーボード、マウスの入力に応じて-1か1の数値を出します。
マウスだとちょっと変わりますが、概ねそんな感じです
関数のグラフのイメージで正負の判定を出力します。
なのでマウスでカメラを動かす
といった動きに多用されるわけですね。
しかしこいつ
マウスの動きは関数グラフと同じですが
これをカメラの動きに当てはめるとXYが逆になります。
罠ですね。
いや罠じゃあないんですが、初心者の方にはマジでわけわからんと思います。
だってXYを順当にカメラの動きに対応させると
マウスを左右に動かすとカメラが上下に動いて
マウスを上下に動かすとカメラは左右に動くんですから
これ、原因はRotationの軸なんですよね。
どういうこと?
カメラが上下左右に動くのは、Rotation、つまり軸を中心にした円運動なんですよね。
で、RotationにおけるX,Yは
X軸、Y軸になります。
Rotation X=60は X軸中心の+60度回転
ってことになります。
X軸は真横に伸びる線です(Z軸もそうだけどそこは気にしない)
真横に伸びる線を中心に+60度回転するとどうなるか?
当然上を向きますよね。
同様にYのRotationをしたら横に回り始めますね。
要するに
マウスのXYは座標を取得するが
RotationのXYは軸を指定するので
そこをしっかりと理解しておかないと、「あれ、マウスを横にしてんのにカメラが縦に動くじゃねーか!!!」
ということになってしまうので、注意しましょう
って話でした。
Rotationって書きすぎて平沢進のRotation(Lotus-2)を聞きたくなったので聞いてきます。
じゃあね。