Unityに関連する記事です

 カメラがプレイヤーを追従する機能を実装し、画面の中央にプレイヤーを表示できるようにします。


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

手順5 ーカメラの追従機能の実装ー

 1.CinemachineをUnityに導入(インポート)する
 2.1台目のVirtual Cameraを設置・設定する
 3.ゲームを実行して動作を確認する



新しく学習する内容


 ・Cinemachineの導入
 ・Virtual Cameraの実装方法(配置・設定)


Cinemachineとは


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


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


<複数カメラの切り替え制御の実装例動画>
動画ファイルへのリンク


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


参考サイト
Unity公式様
Cinemachine を使ってカメラを設定しましょう
https://forpro.unity3d.jp/unity_pro_tips/2019/07/2...
LIGHT11 様
【Unity】Cinemachineの全機能を解説!ありとあらゆるカメラワークを高クオリティに作る方法総まとめ
https://light11.hatenadiary.com/entry/2019/10/24/2...


設計


 MainCamera1台を使ってゲームシーンを映していくこともできますが、今回は演出の一環としまして、このCinemachineの機能を使っていきます。
最終的には、ステージを移動する際にカメラを順次切り替えていくことで3D空間を上手く演出に取り入れたステージを作成することを目的にしていきます。

 まずは今回の設計では、プレイヤーの追従を行う機能のみを実装していきます。
プレイヤーを横方向から見たカメラワークでゲームが進行するようにしてみましょう。


1.CinemachineをUnityに導入(インポート)する

PackageManagerビューを使って Cinemachine を選択する


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

 PackageManagerビュー内の左上の Packages を選択するとプルダウンメニューが表示されますので、この中から Unity Registry を選択します。
読み込みが始まり、PackageManagerビュー内の左側の項目に複数のアセットが表示されますので、この中から Cinemachine を探してクリックください。
 
 Cinemachine のバージョンについては最新のものが自動的に表示されますので、変更する必要はありません。


Packagesを Unity Registry に変更



手順動画 Packagesを Unity Registry に変更
動画ファイルへのリンク


Cinemachineのインポート(画像とバージョンが異なる場合があります)

 

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

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


Cinemachine フォルダの場所



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


2.1台目のVirtual Cameraを設置・設定する


 早速Cinemachineの機能を活用していきます。

 UnityにCinemachineがインポートされると、左上のメニュー内の GameObject 内に Cinemachine の項目が追加されます。
(古いバージョンの場合には、直接メニューに Cinemachine の項目が追加されます)


Unity メニュー



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

参考サイト
のっぴの備忘録 様
Cinemachineの使い方 Virtual Camera)
https://nopitech.com/2017/10/26/post-182/


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


 GameObject => Cinemachine => Virtual Camera を選択してください。ヒエラルキーに CM vcam1 ゲームオブジェクトが追加されます。
これは CinemachineVirtualCamera コンポーネントを持つゲームオブジェクトであり、特別な設定がない基本的なものです。
このコンポーネントを持つゲームオブジェクトを Virtual Camera と総称しています。


ヒエラルキー例



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


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


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



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



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

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


MainCamera ゲームオブジェクト インスペクター画像(Transform の値は参照しないでください)



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


 CM vcam1 ゲームオブジェクトの名前は任意の名前に変更して構いません。

 コンポーネントを確認しましょう。
CinemachineVirtualCamera コンポーネントがアタッチされています。このコンポーネントによって VirtualCamera が機能しています。
また MainCamera にアタッチされている CinemachineBrain コンポーネントとこのコンポーネントとが連動しています。

 主にカメラの機能を設定しているのは、Body と Aim という設定です。

 Body は、カメラをどのように制御するのかを設定する内容です。初期設定で Transposer になっています。
この設定にしておくと、カメラが Follow 対象として指定したゲームオブジェクト(今回はプレイヤー)を、一定の距離を置いて追従します。

 Aim は、カメラの回転の設定です。初期設定で Composer になっています。
この設定にしておくと、Look At 対象に指定したゲームオブジェクトをカメラフレーム内に維持します。

 今回はこちらの設定はそのまま利用します。

参考サイト
Unity 公式マニュアル
Transposer
https://docs.unity3d.com/ja/Packages/com.unity.cin...
Unity 公式マニュアル
Transposer
https://docs.unity3d.com/ja/Packages/com.unity.cin...


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



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

 現在は Body と Aim の部分に黄色い警告が表示されていると思います。これはカメラの設定に不備があることを示す警告です。
このうち、Body については設定を行っていくことで解消されますので、いまは警告は表示されている状態で問題ありません。


Virtual Camera にキャラを追跡させるための Follow 設定と Binding Mode の設定を行う


 CM vcam1 ゲームオブジェクトの CinemachineVirtualCamera コンポーネントにある Follow プロパティを設定します。
これは Body の設定が Transposer になっている場合に、こちらの Follow に設定した任意のターゲット(Transform)をカメラに追跡させる機能です。

 Follow プロパティに、ヒエラルキーにあるプレイヤーキャラクターのゲームオブジェクトをドラッグアンドドロップしてアサインしてください。

 Body の設定内にある Binding Mode の設定を Look To Target On Assign に変更してください。


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


 設定すると、Body に表示されていた警告が解消されます。



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


Follow 設定後の GameScene ビュー



Virtual Camera にキャラをカメラ内に維持させるための LoolAt 設定を行う


 CM vcam1 ゲームオブジェクトの CinemachineVirtualCamera コンポーネントにある LookAt プロパティを設定します。
これは Aim の設定が Composer になっている場合に、こちらの LookAt に設定した任意のターゲット(Transform)をカメラ内納めるように維持させる機能です。

 LookAt プロパティに、ヒエラルキーにあるプレイヤーキャラクターのゲームオブジェクトをドラッグアンドドロップしてアサインしてください。

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



 設定すると、Aim に表示されていた警告が解消されます。


ゲームを実行してデバッグする


 準備ができましたので、ゲームを実行し、画面の中央にキャラがいる状態でカメラが一緒に追従して移動するか確認します。


検証動画 キャラの移動に合わせてカメラが移動する(Virtual Camera と MainCamera の両方の Transform の値が更新されます)
動画ファイルへのリンク


 これでの Virtual Camera の基本的な設定は完了です。

 次の手順でカメラの設定を調整します。


3.Virtual Camera の調整を行う


 ヒエラルキーにある CM vcam ゲームオブジェクトを選択し、Game ビューを確認してください。
プレイヤーを中心に、Game ビューに赤い範囲とそうではない範囲が表示されています。

 この範囲が広いと、カメラがプレイヤーを追従するまでの範囲が広くなります。
そのため、ゲームを実行し、カメラがプレイヤーを追いかけてくるまでの時間が長かったり、
ゲーム画面のはずれの方までいかないと追従を始めなかったりする場合には、この範囲を狭くすることで対応が出来ます。

 この設定は Game ビュー内の範囲をドラッグアンドドロップすることで任意の幅に調整できますので、
ゲームを実行しながら、自分の考えている理想的なカメラの追従範囲になるようにデバッグを行ってください。
 
 また Body の各 Damping の値を 0 にすると、カメラがすぐにプレイヤーを追従するようになります。









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

 => 次は 手順6 ージャンプ機能の実装ー です。
 

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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