モバイルファクトリー Advent Calendar 2015 15日目担当の@kazuman519です。
はじめに
先日あるハッカソンでゲームを作った際に、特定のオブジェクトをスワイプとピンチでカメラをグリグリ動かして眺めまくれる機能が欲しかったのですが、ぱっと見見当たらなかったので自作しました。
これがあれば、
「キャラクターの詳細画面でグリグリしてキャラクターを眺めたい!」
「ステージ選択画面でステージをいろいろな角度から客観的に眺めたい!」!
などといった場面で使えるかもなぁと持ったので、簡単に使えるような形にしてgithubに公開しました。
URL : ObservationCamera
今回は此方の使い方の紹介をしようと思います。
リポジトリの構成
- 今回のキモとなるスクリプト「ObservationCamera.cs」はObservationCamera/Assets以下にあります
- また、サンプルプロジェクトを用意してあり、ObservationCamera/Assets以下にあるMainScene.unityからunityを起動すれば動作を試すことができます
使い方
1. ObservationCameraオブジェクトの作成
まず、ObservationCameraスクリプトを貼り付けるためのオブジェクトと、眺めるオブジェクトを用意します。
スクリプトを貼り付けるオブジェクトの準備として、
Empty Objectを2つ、Camera Objectを1つ作ってください。
今回の説明ではEmpty Objectの名前は「ObservationCamera」と「CameraFixObject」、
Camera Objectの名前は「Camera」、
眺めるオブジェクトの名前は「TargetObject」といった名前で説明していきます。
親子関係は以下のようにしてください。
2. それぞれのオブジェクトの配置と役割
ObservationCamera
- カメラを上下左右に回転させるためのベースとなるオブジェクトになります
- 「TargetObject」と同じポジションに配置してください
CameraFixObject
- カメラのポジションとローテーションを固定するオブジェクトになります
- カメラの高さと角度を調整したい場合はこのオブジェクトのポジションとローテーションを触って調整します
- このオブジェクトの子としてカメラを持たせることで、ズーム機能実装時に角度と座標の計算といった面倒なことをする必要がなく、Cameraオブジェクトのz軸の移動のみでズームが出来るようになっています
Camera
- カメラです
- 基本的にポジションとアングルは全て0にしておいてください
3. スクリプトの設定・プロパティの役割
後は、上の作業で作成した「ObservationCameraObject」にObservationCameraObjectスクリプトを貼り付けます。
貼り付けると以下のようなプロパティが弄れるようになります。
各プロパティの役割
- Camera
- オブジェクトを眺めるためのカメラです
- isAutoRotate
- 最初に自動で回転させておくかのフラグです
- MinCameraAngleX
- カメラの最小角度です
- MaxCameraAngleX
- カメラの最大角度です
- SwipeTurnSpeed
- スワイプで回転するときの回転スピードです
- PinchZoomSpeed
- ピンチするときのズームスピードです
- AutoRotateSpeed
- 自動で回転させるときの回転スピードです
以上の設定ができれば動かせるようになっていると思います。
※注意点として、ピンチによるズームインズームアウトはiOS/Android端末でビルドしないと確認できないのが少し不便です。
突貫でgithubにあげたものなので、まだドキュメントなど全然整っていないですが、
その辺りは今後整備していこうかと思います。
明日は@mattak@githubさんです。
kotlinの話らしいので楽しみです!