Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0今回はCineMachineを使ってカメラの切り替え等を行ってみたいと思います。CineMachineはUnityさんが作った追加アセットで、カメラの動きを作成するのに便利です。Timelineでの使用や通常のゲームでの使用が可能です。TimelineについてはUnityでタイムラインを使ってゲームのイベントシーンの動きを作成してみるUnityでタイムライン(Timeline)を使ってゲームのイベントシーンの動きを作成してみます。タイムラインを使うとキャラクターのアニメーションや音声の再生等のタイミングを合わせることが視覚的にわかりやすくなります。20:02を参照してください。スポンサーリンクCineMachineCineMachineは追加でアセットをダウンロードする必要があります。Storeを開いたらCineMachineで検索するとすぐ出てきます。CineMachineのインポートが終わるとUnityのメニュー項目にCinemachineメニューが追加されます。↑のようにいくつかの項目があります。Aboutを選択するとCineMachineのマニュアルページを開きます(細かい情報はそちらを参照してください)。Camera(仮想カメラ)でそれ以外はそれを拡張した感じですね。Trackを追加出来るようになります。その為、通常のゲームのカメラの挙動だけでなくTimelineを使った時のカメラの挙動も作成する事が出来ます。CineMachineの概要CineMachineは仮想カメラ(実際のカメラを作成しない)を設置して、既存のカメラ(例えばMainCamera)の動きを作成します。Brainコンポーネントを取り付け、仮想カメラから動かす事が出来るようにします。Brainコンポーネントを取り付けたカメラを操作するように設定していくという感じになります。Cameraをヒエラルキー上に配置しキャラクターを追いかけるようにしてみます。キャラクターにはAnimatorControllerと、移動スクリプトが既に取り付けられている必要があります。Brainを取り付けておきます。Emptyで空のゲームオブジェクトを作成し、名前をNormalVirtualCameraとします。この後いくつかの仮想カメラを作成していく為、階層を分けて作成していく事にします。Cameraを選択し仮想カメラを作成したらNormalVirtualCameraの子要素に移動しておきます。Brainコンポーネントを取り付けているので、赤い四角の部分にCinemachineのアイコンが表示されるようになります。Cameraコンポーネントが取り付けられているのがわかります。Statusの右のSoloボタンは押すとこの仮想カメラで写した映像が表示されます。このカメラが写す映像を確認したい時に押すと便利です。Guidesにチェックを入れるとカメラがターゲットを追いかける時の設定をGameビューで確認出来るように枠を表示します。Playにチェックを入れるとUnityEditorで実行中に仮想カメラの設定を変えた時の変更値が実行を終えた時にも反映されます。実行しつつ設定値を変更したい時はチェックを入れるといいです。Priorityはこの仮想カメラの優先度で数値が高いほうが優先度が高くなります。複数の仮想カメラがある時にカメラの優先度を付けたい時はそれぞれの仮想カメラのPriorityを変更します。Followはカメラが追いかける対象を設定します。LookAtはカメラが見る部分を指定します。Planeはカメラのレンズに映る一番遠い位置BodyBodyはカメラ本体の動きに対する設定です。Donothingに設定するとカメラの本体は動きません。Transposerはフレーム毎に位置を移動させます。設定を少し見てみましょう。smoothingはターゲットを移す時のスムーズの度合いX、Y、ZDampingは本体がX、Y、Z軸の変更の減衰率で値が低いほうが応答性が高いみたいです。Distanceはターゲットからカメラの距離DeadZoneのWidth、Height、Depthはカメラが移動しない範囲の設定でその幅、高さ、深さを設定します。Zoneにチェックを入れるとソフトゾーンが無制限になります。SoftZoneのWidth、Heightはカメラが徐々にターゲットの方向を向かせる範囲の設定で幅と高さを指定します。BiasのXとYは調整位置です。↑の透明部分がデッドゾーンで青い部分がソフトゾーン、赤い部分がそれ以外の範囲でここでは徐々にではなく一気に位置を移動します。Targetは徐々に遷移させず、すぐにターゲットの方向を向きます。Transposerはマウスなどの操作でカメラを回転させる設定です。Modeが表示されますが、これはカメラの本体をどこに拘束して回転させるかの設定みたいですがよくわかりません。Xの部分をInputManagerの他の設定の文字列を指定すればその操作で回転します。細かな設定が他にもありますが・・・ここはスルーしていきます。Bodyの設定に戻りましょう。Dollyはカメラのいくつかのポイントを作成し、そのポイントを繋げたカメラレールの上をカメラが移動する設定の時に使用します。Transposerはシンプルなターゲット追跡の設定です。Modeの設定は多くありますが、不明な点も多いためCinemachineのマニュアルを参照してみてください。AimAimはターゲットの方向を見る為の設定です。Transposerの設定と同じですね。NoiseNoiseはカメラがターゲットの方向を向いたときに固定されたままにせず手で持っている時のような手ブレを表現したい時に使用します。プリセットで用意されている項目を選択しブレの設定を行います。ExtensionsExtensionsは拡張機能を追加する時に使用します。Cameraコンポーネントの設定はこんな感じです。実際にCinemachineを使ってみるとりあえずCinemachineVirtualCameraコンポーネントを見てきたので、UnityメニューのCinemachineから作成出来る仮想カメラをいくつか使ってみましょう。個々の仮想カメラを試す時は他の仮想カメラの親を非アクティブにして作用しないようにしてください。仮想カメラのFollowにはキャラクター、LookAtにはキャラクターの頭を設定します。Cameraを使って、キャラクターを追いかけるようにしてみます(既にNormalVirtualCameraの子要素に設置しています)。Followにはキャラクター、LookAtにはキャラクターの頭を設定しました。vcam1)の設定によってキャラクターを追いかけるように移動しました。Cameraを使ってみます。CameraはTopRig、MiddleRig、BottomRigの3か所の位置と半径を設定し、その範囲の中で視点を手動で変化させることが出来るカメラです。Cameraを選択し作成します。Cameraと同じようにキャラクターを追いかける設定をしつつ、マウス操作で視点を変更してみます。Followにはキャラクター、LookAtにはキャラクターの頭を設定します。Carvatureを変更するとTopRig、MiddleRig、BottomRigを繋ぐスプライン曲線の曲線を変更できます。TopRig、MiddleRig、BottomRigの位置や半径はその下の項目で設定できます。カメラの移動設定はそれぞれのRigの設定で変更出来ます。それでは試してみましょう。↑のようにキャラクターを追いかけるだけでなく視点の変更も出来ました。Cameraと同じような感じにできます。Cameraを使ってみます。Cameraは設定したAnimatorの遷移状態によって仮想カメラを切り替える事が出来ます。Cameraを選択し作成します。StateDrivenCamera1で設定が出来ます。StateDrivenCamera1のインスペクタから切り替えるカメラを追加できます。今回は以下のような設定にします。Targetに設定したAnimatorの遷移状態に応じてカメラを切り替えます。Blendでカメラ切り替え時の補間の設定を行う事が出来、徐々に切り替えたり、パッと切り替えたりといった設定が出来ます。ここでの設定は全てのカメラの切り替え時に使用されます。Assetを押すと設定ファイルを保存するダイアログが表示されるので、設定ファイルを保存します。インスペクタで+の部分を押して個別のカメラの設定を作成することが出来ます。Stateで実際にAnimatorの状態と仮想カメラを設定します。vcam3という名前の仮想カメラに切り替えることにしました。Waitはそのカメラから別のカメラに切り替え始めるまでの時間です。Minはわかりません。↑のような感じでIdle状態とWalk状態で仮想カメラを切り替える事が出来ました。特別なアニメーションの状態の時にカメラを専用の視点に切り替えたい時などは便利かもしれませんね。Cameraを使ってみます。Cameraはカメラのコライダの範囲に指定したターゲットが侵入したらカメラを切り替えることが出来ます。Cameraを選択し仮想カメラを作成します。↑のような階層になります。ClearShotCameraの子要素にCubeを作成し、Scaleを調整して二つの仮想カメラの間に壁を作成します。↑のような感じで仮想カメラの間にCubeで壁を作成しています。vcam5になります。ClearShot1を選択し、インスペクタで設定をします。LookAtにはキャラクターを設定し、仮想カメラがキャラクターの方向を向くようにします。vcam4の優先度を上げます。Colliderというコンポーネントが取り付けられています。Againstが障害物とするゲームオブジェクトのレイヤーです。Tagで除外するタグを指定。Targetはこの距離より近い障害物は対象外になります。Obstaclesにチェックを入れると障害物を回避します。Radiusは障害物からこの距離を保ちます。Strategyは障害物を回避する方法。Distanceは最適なターゲットとの距離。Forwardにし、カメラが壁と被ったらカメラの位置を壁の位置に移動するようにします。Blendのsecを5にし切り替わるまで5秒かかるようにします。実行すると↑のような感じでカメラのコライダにキャラクターが接触したら優先度に応じてカメラを切り替えることが出来ています。vcam4が優先されています。Trackを使用してみます。Trackは仮想カメラと仮想カメラの移動ポイントを組み合わせ、カメラの位置をレールに乗って動かすような事が出来ます。Trackを選択し作成します。↑のような階層になります。Positionの値を変えるとDollyTrack1で作成したカメラ位置の間を動きます。Dollyのチェックを入れ自動で動くようにします。DollyTrack1のインスペクタではカメラの移動ポイントをいくつか作成します。Loopingのチェックを入れると最後の点と最初の点が繋がるようになります。今回作成した移動ポイントは↑のようになります。それではキャラクターを動かして確認してみましょう。↑のようになりました。キャラクターの移動先に合わせてカメラレールの上をカメラが移動しているのがわかりますね。Trackを作成し、そこで仮想カメラの切り替えをしてみたいと思います。Trackを選択します。Clipを選択します。Clipを作成します。Cameraを2つ作成し、Followにキャラクター、LookAtにキャラクターの頭を設定します。作成した仮想カメラの位置等を調整し、2つの視点を作っておきます。Trackに作ったクリップを選択し、インスペクタで仮想カメラをそれぞれ設定します。Cameraを設定します。最終的には↑のようになりました。それでは確認してみます。↑のようになりました。クリップに応じてカメラが切り替わっています。Stackのベータ版?)を使用しています。Stackが使えなくなります。Settings→Playerを選択し、インスペクタでScriptingDefineSymbolsの設定で、UNITY_POST_PROCESSING_STACK_V2を削除するとエラーが消えました。V1や他の設定は消しません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/18個人的にUnity2019.2.18f1をインストールしました。2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。