Unityに関連する記事です

 プレイヤーの操作する味方キャラの移動に合わせてカメラが追従する制御処理を実装します。


<実装動画>
動画ファイルへのリンク


 以下の内容で順番に実装を進めていきます。

手順8 ーカメラの追従制御の実装ー
12.Cinemachine アセットを利用して、Chara ゲームオブジェクトをカメラが追従する機能を実装する



 新しい学習内容は、以下の通りです。

 ・Cinemachine(シネマシン)の導入
 ・Virtual Cameraの実装方法(配置・Chinemachine Virtual Camera コンポーネントの設定)



12.Cinemachine アセットを利用して、Chara ゲームオブジェクトをカメラが追従する機能を実装する

1.設計


 Chara ゲームオブジェクトが移動を行うにあたり、現在はカメラが Chara ゲームオブジェクトを追従しないため、
Chara ゲームオブジェクトが移動してもゲーム画面はそのままの位置から変更されません。
よって、カメラが Chara ゲームオブジェクトにフォーカスしたまま移動していく必要があります。

 Scene ビューにおいて製作したゲーム画面は Main Camera ゲームオブジェクトにアタッチされている Camera コンポーネントを通じて
Game ビューに映されています。そしてこれが実際のゲーム画面になります。

 今回は Cinemachine(シネマシン) という機能を利用して、Main Camera ゲームオブジェクト以外にもカメラの役割を持つコンポーネントを使い、
このカメラに映った Scene ビューの内容を Game ビューへと投影する処理を実装します。

 Cinemachine の機能を利用すると、プレイヤーキャラを追従するカメラの処理や、カメラの移動する範囲の制御などをノーコードで実装することが可能です。


2.Cinemachine


 Cinemachine(シネマシン)は、Unityが無料で提供している、カメラの機能をまとめた Packege になります。
対象を指定することでカメラが自動で追尾したり、複数のカメラをゲーム画面内に配置してそれらの制御する機能などを実装することが可能です。

 例えばカメラを2台用意し、移動する際に自動的にカメラを切り替えてみると、下記の動画のようなカメラワークでゲームを進行してくことが出来ます。
カメラが切り替わるときには、前のカメラと次のカメラとは、自動的に補間処理されてスムースにつながります。これも Cinemachine の機能の1つです。


実装動画例
動画ファイルへのリンク



 Cinemachine は機能が膨大であるため、この手順では使用する機能についてしか説明をしていません。
詳しくは自分で調べて実装を行ってみましょう。説明を読みながらいじっていると自然に機能が分かってきます。


参考サイト
Unity公式様
Cinemachine を使ってカメラを設定しましょう
https://forpro.unity3d.jp/unity_pro_tips/2019/07/2...
のっぴの備忘録様
Cinemachineの使い方 Virtual Camera)
https://nopitech.com/2017/10/26/post-182/


3.Cinemachine を Unity にインポートする


 エディター内にある、PackageManager ビューのタブを選択します。
もしもエディター内に PackageManager ビューがない場合には、Unityの左上のメニューから、Window => PackageManager を選択してください。

 PackageManagerビュー内の左上の Packages を選択するとプルダウンメニューが表示されますので、この中から Unity Registry を選択します。
読み込みが始まり、PackageManagerビュー内の左側の項目に複数のアセットが表示されますので、この中から Cinemachine を探してクリックください。
 

Packagesを Unity Registry に変更



<手順動画 Packagesを Unity Registry に変更>
https://gyazo.com/f4bbb72494da5975b9677e49c6b767c9


Cinemachineのインポート

 

 Cinemachine 内の右下にある Download ボタンをクリックします。Downloadが終了すると Import ボタンになりますので、そちらもクリックしてください。
Importする内容を選択するウインドウが開きますので、すべての内容の Import を行いますので、そのまま Import ボタンを押してください。

 プログレス表示が出て、しばらくすると Import が完了します。Import された Cinemachine は、Assets 内ではなくて Packages 内に追加されます。


Cinemachine フォルダの場所



 以上で Cinemachine のインポートの手順は終了です。続いて、Virtual Camera を設置していきます。


4.Virtual Camera を作成する


 Cinemachine の機能を実装していきます。

 Unity に Cinemachine がインポートされると、左上のメニューに Cinemachine の項目が追加されます。
ただし、Unity のバージョンによってはメニューには表示されず、GameObject メニュー内に追加されます。


Unity メニュー



Unity メニュー



 この中に Virtual Cameraをゲームシーンに追加するコマンドが含まれてますので、実行していきましょう。
各項目はすべて Virtual Cameraを追加するメニューになっており、一番上の Virtual Camera がプレーンの状態で追加されるコマンドです。
それ以外のコマンドはプレーンの状態ではなく、Virtual Cameraにカスタム設定を追加した状態で追加してくれるテンプレート的なコマンドになっています。


5.CinemachineVirtualCamera コンポーネントを持つ CM vcam1 ゲームオブジェクトをヒエラルキーに追加する


 Unity Editor の左上のメニューより、Cinemachine => Create Virtual Camera を選択してください。
Unity のバージョンによっては Cinemachine のメニューがないため、その場合には、GameObject => Cinemachine => 2D Camera を選択してください。
ヒエラルキーに CM vcam1 ゲームオブジェクトが追加されます。


 これは CinemachineVirtualCamera コンポーネントを持つゲームオブジェクトであり、特に何も設定がされていない、プレーンなカメラです。
この CinemachineVirtualCamera コンポーネントを持つゲームオブジェクトを Virtual Camera と総称しています


ヒエラルキー



6.Main Camera ゲームオブジェクトと Virtual Cameraの関わり


 Virtual Cameraである CM vcam1 ゲームオブジェクトが作成される同時に、Main Camera ゲームオブジェクトの右端に新しいアイコンが追加されます。


ヒエラルキーのMainCameraゲームオブジェクト



 Virtual Cameraがある限り、ゲーム画面を映すカメラの役割は Virtual Camera となり、そのVirtual Cameraの映した内容を投影するカメラが MainCamera の役割になります
そのためこのアイコンは、今現在、MainCameraはVirtual Cameraと連携しているので、Main Camera を直接動かすことができなくなることを示すアイコンです。



 Main Camera ゲームオブジェクトのインスペクターを確認します。
新しく CinemachineBrain コンポーネントが追加されているはずです。
こちらが先ほど説明しました、MainCameraの役割を Virtual Cameraの映した内容を投影するように設定しているコンポーネントです。
今回はこのコンポーネントの設定は変更しませんので、アタッチされている確認をしておいてください。

 また Transform の値も注目してください。
あとで確認しますが、Main Camera ゲームオブジェクトの Transform の値は、 Virtual Cameraである CM vcam1 ゲームオブジェクトの Transform の値に自動的に設定が行われます。 


Main Camera ゲームオブジェクト インスペクター画像


3Dゲームにおいて2D環境のカメラを適用する場合

 今回は関係ありませんが、最初に設定したプロジェクトのテンプレートが2Dゲームか、3Dゲームかにより、カメラの Projection の設定が異なります。

 Unityhub でのプロジェクトの選択時に3Dを選択している場合、Camera コンポーネントの Projection の設定が自動的に 3D用の Perspective に設定されています。
この状態ですと 2D空間の描画が正常に行えないため、Projection の設定を Orthographic に変更してください。カメラのサイズが画面内に収まるようになります。


<Main Camera ゲームオブジェクト インスペクター画像>



<Sceneビュー画像(白い枠がカメラの描画領域です)>




7.CM vcam1 ゲームオブジェクトの設定を確認する


 CM vcam1 ゲームオブジェクトのコンポーネントを確認しましょう。
Cinemachine Virtual Camera コンポーネントがアタッチされています。このコンポーネントによって Virtual Camera が機能しています。
また Main Camera ゲームオブジェクトにアタッチされている Cinemachine Brain コンポーネントとこの Cinemachine Virtual Camera コンポーネントとが連動しています。


CM vcam1 ゲームオブジェクト インスペクター画像 Body の詳細





 Cinemachine Virtual Camera コンポーネントは Body の設定により、Virtual Camera がどのような振る舞いをするかを決定しています。
Create Virtual Camera で作成した場合には、このBodyの設定が Framing Transposer になります。これは 2D用に Virtual Camera を振る舞うようにする設定になります。


CM vcam1 ゲームオブジェクト インスペクター画像 Body の詳細




8.カメラにキャラを追跡させるためのFollow設定を行う


 Cinemachine Virtual Camera コンポーネント内にある Follow プロパティを設定します。
これは、この項目に設定した任意のターゲット(Transform)を Virtual Camera カメラに追跡させる機能です。

 今回カメラに追跡させたい対象は味方キャラのゲームオブジェクトです。

 CM vacm1 ゲームオブジェクトの Cinemachine Virtual Camera コンポーネント内にある Follow プロパティの欄に
ヒエラルキーにある Chara ゲームオブジェクトをドラッグアンドドロップしてアサインしてください。
カメラの座標(Position)が Chara ゲームオブジェクトの位置に自動的に変更になります

 また、MainCamera ゲームオブジェクトの位置も、CM vacm1 ゲームオブジェクトの位置と同じになります。


Chara ゲームオブジェクト インスペクター画像



CM vcam1 ゲームオブジェクト インスペクター画像



MainCamera ゲームオブジェクト インスペクター画像




 Game ビューを確認してみてください。カメラが設定したキャラを追跡するために位置が変更になっています。


Follow設定前のGameSceneビュー


Follow設定後のGameSceneビュー



 以上で設定は完了です。


9.ゲームを実行して動作を確認する


 ゲームを実行し、今までと同じように画面の中央にキャラがいる状態でカメラが一緒に追従して移動するか確認します。
また、Virtual Camera の情報が、Main Camera とリンクしているかも合わせて確認を行います。


検証動画 Chinemachine Virtual Camera コンポーネントの Follow に設定した対象物(Chara ゲームオブジェクト)の移動に合わせて CM vcam1 ゲームオブジェクトが移動する
動画ファイルへのリンク


検証動画◆Virtual Camera と一緒に Main Camera も動く(Transformの値が同じ値になっている)
動画ファイルへのリンク


 これで Virtual Camera の設定は完了です。どの機能がどのように利用されているのかをしっかりと確認しておいてください。
また、Unity ではインスペクターを活用することで、色々な情報を確認しながらデバッグすることが出来ます。
この方法を覚えて自分のゲーム製作の際に活用してください。



 以上でこの手順は終了です。

 次は 手順9 −カメラの移動範囲の制御− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます