Unity不定期便

Unityエンジンを使って、いろいろ勉強したことをメモ代わりにまとめてます。

Unityで、オブジェクトを中心にカメラを円移動させる簡単な解決方法!

f:id:masatolan:20131127114858j:plain

 

どうもです!

Unityで、くだらないゲームをいくつか作っているうちに、カメラを動かしたくなったのでいろいろ調べた内容をメモ代わりに共有しておきます。

今回は、あるオブジェクトを中心に、その周りをカメラがグルグル周るにはどうしたら良いのか?を調べました。

 

今回の状況を説明!

まず、どのようにカメラを動かしたかったかと言うと、以下の通り3つのCubeを縦に並べた状態で、その周りをカメラがグルグルと周って移動して欲しかったのです…。

f:id:masatolan:20131127115422j:plain

最終的には、床を回転させるのと同じような動きになるのですが、Cubeにrigidbodyが付いているので安定して回すのが難しかったという背景があります…。

 

いろいろ考えた!

イメージとして、キーボードの矢印キーを押したら横方向に周って欲しかった。

キーの取得は、以下の様な簡単なスクリプトで実現できるので問題ない。

Input.GetAxis ( "Horizontal" )

しかし、このままカメラを移動させたら、ただひたすらまっすぐに移動するだけになってしまう…。

f:id:masatolan:20131127120316j:plain

 回転させても、その場でクルクル周るだけ…。

さて、一体どうしたらいいものか…と、悩んでいたら以下のブログでヒントを見つけることが出来ました!

naichilab - Android iOSアプリ開発メモ: 【Unity】タッチ操作で特定のオブジェクトを中心にカメラを回す

 

カメラを親子関係にする!

空のゲームオブジェクトを親にして、子にメインカメラをセットするという方法!

親と子の位置関係は、こんな感じ!

f:id:masatolan:20131127121353j:plain

こうすれば、親を単純に回転させるだけで、カメラも一緒にグルグル回転してくれるというわけですね!

これは、使える〜!! 

 

ヒエラルキーは、このように。

f:id:masatolan:20131127121855j:plain

親の方(GameObject)に貼り付けたスクリプトは、以下のような単純なものでOK!

function Update () {

    this.transform.Rotate ( 0, ( Input.GetAxis ( "Horizontal" ) * 1 ), 0 );

}

これで実行すると、キーボードの矢印キーに合わせてカメラがグリグリ回転します!

f:id:masatolan:20131127122458j:plain

床を回転させたくない場合には、上記の方法でカメラを円移動させるのが便利だと思います!

いろんなゲームに応用できそうですね。