【Unity】カメラを円運動させながら2つのオブジェクトを映す方法

投稿者: | 2018年10月25日

 

フィア
カレえも~ん!

Unityのカメラで、2つのオブジェクトを映しながら

円運動ってどうやってさせたらいいの?

カレン
誰がカレえもんよ
カレン
ん~っと、カメラの円運動だけなら、

LookAt (target) とか、

映したい物体の子にカメラを置けばできるけど、

2物体となると、ちょっと複雑になるわね

フィア
複雑でも大丈夫! 私、頑張るよっ!
カレン
本当かな~…じゃあ頑張ってついてきてね

 

【今なら1冊無料!】Amazon Audible を使ってみた感想と使い方

 

このページの構成

 

 

カメラを円運動させている動画

これは自作ゲーム「クリプトモンスターファーム」のPV内の映像です。

モンスター2体をとらえつつ、カメラが往復円運動しているのが分かります。

 

 

 

カメラの動かし方

オブジェクトの配置

今回のヒエラルキーとオブジェクトの配置です。

本サイトでは、スクリプトは全てGameSystemにアタッチしています。

また、ゲームの仕様上、x座標のみObjectが移動できるものとします。

 

 

 

 

フィア
わ、私のことは置いて先に行け~(バタンッ
カレン
まだ始まってないんだけどなぁ…

 

 

ソースコード

 

これをGameSystemに取り付けて実行すると以下のようになります。

 

フィア
あっ! なんだかよくわからないけど

コピペしたら動いた!

カレン
まぁ、理解しなくても、丸々コピペして必要なところだけ

数字を変えるのもありだと思うわ

 

 

オブジェクトの中間点にカメラの視線を向ける

 

ここでは

  1. Objectの位置座標を取得(更新)
  2. 中間点を取得し、そこにLookAtでカメラの視線を向ける
  3. Debug用にカメラから青色の線を発射

という手順を踏んでいます。

このCameraDirection()メソッドをUpdate()へ入れることで、

カメラが常にMidPointを追いかけるようになります。

 

 

 

カメラを円運動させる

 

フィア
eulerAngles…? Rotateと何か違うの?
カレン
うっ…、痛いところついてくるなぁ
カレン
簡単に言えば、RotateはUnityのInspector上の数字で、

eulerAnglesは私たちが普段使ってる角度って感じかなぁ

カレン
オイラー角とか言われてもよく分からないだろうし、

今回は自分で調べてちょうだい

フィア
来世の私ならきっと理解できるはず!

 

MidPointを回転させるだけならばRotateだけでも可能ですが、

今回は往復させているので角度の条件が必要でした。

 

そこで、eulerAngles を用いましたが、他にもいい方法があるかも知れません。

条件を40°以上や320°(―40°)以下に設定したのは、

角度が float ですので、ピッタリ40°というのは難しかったからです。

 

オブジェクト間距離が広がったときにカメラを後ろに下げたいときは

オブジェクト間距離を取得し、それに比例してカメラとMidPoint間距離を変化させれば可能です。

 

まとめ

  • カメラを往復円運動させながら2つのオブジェクトを映すことができた

カレン
今回のは少し難しかったわね
カレン
でも、今回は最後まで起きててえらいじゃない

 

 

フィア
みてみてーっ! 地球の eulerAngles!
カレン
極座標系…意外と核心をついているかも…!

 

【おすすめの入門書】Unity の教科書 2D&3Dスマートフォンゲーム入門講座

 

すくまりゲームズの人気記事