Swampdog part5 -カメラズーム、移動-
目次
概要
前回は躓いてしまった結果、カメラの回転しか実装できませんでした。
今回はズームと移動を実装します。
ズームは基準点と原点の距離rを変化させることで、
移動は基準点に対するカメラの位置x, yを変化させることで実現します。
カメラズーム
DUALSHOCK3では右スティックの上下の傾きを取得します。
今回は確認として、キーボードのQをズームイン、Wをズームアウトとしました。
ReferencePointに紐付けたスクリプトのUpdate()の中に追記します。
// ズーム
if (Input.GetKey(KeyCode.Q)) {
r += diffR;
UpdatePosition();
} else if (Input.GetKey(KeyCode.W)) {
r -= diffR;
UpdatePosition();
}
前回のスワイプ後のReferencePointの位置、向きの修正をUpdatePosition()として切り出しました。
首尾よくできました。
ズームのスピードは後ほどいい塩梅に修正します。
ちなみにGetKeyをGetKeyDownに変更すればボタンを押すたびに離散的に変化させることができます。
GetKeyの場合、押し続けるた時間の分だけ変化します。
カメラ移動
回転とズームはReferencePointの位置、向きを変更しましたが、移動ではCameraのReferencePointに対する相対位置を変更します。
void Update () {
// 移動
if (Input.GetKey(KeyCode.UpArrow)) {
this.transform.localPosition += new Vector3 (0, diffPosition, 0);
} else if (Input.GetKey(KeyCode.DownArrow)) {
this.transform.localPosition -= new Vector3 (0, diffPosition, 0);
} else if (Input.GetKey(KeyCode.LeftArrow)) {
this.transform.localPosition -= new Vector3 (diffPosition, 0, 0);
} else if (Input.GetKey(KeyCode.RightArrow)) {
this.transform.localPosition += new Vector3 (diffPosition, 0, 0);
}
}
こんな感じのスクリプトをカメラにつけてあげれば良いです。
次回
回転に比べて随分すんなりと終わりました。
今回でカメラ機能については一旦終了です。
次はVR化、DUALSHOCK入力を実装します。
手元にDUALSHOCK入力を試す環境が整っていないのでVR化からやります。
今後もこれくらいサクサク進むといいな。