#初めに
今回は私の好きなゲームのBF1のリスポーンみたいなカメラワークを実装したかったので、それについて解説します。
BF1みたいなリスポーンって何って人はこれを参考にしてみてください。
↓参考動画
#目次
1.Cinemachineとは
2.Cinemachineの導入
3.実際に使ってみる
#1.Cinemachineとは
Cinemachineは名前からも分かる通り映画のようなカメラワークを実現できるアセット?となっています。
もちろんゲームで用いることもできますが、最初のオープニングなどのムービー系に使うのがいいと思います。
今回はCimemachineを使いますが特に難しい機能を使うわけではないので安心してください!
#2.Cinemachineの導入
まずはCinemachineを使うためにプロジェクトにCinemachineをインポートします。
やり方としては
1.WindowからPackageManagerを開きます。
2.PackageManagerからCinemachineを探しインストールします。ない場合は右上の検索バーから検索しましょう。
(右上のところがUnityRegistryになっていないと出てこないので注意しましょう。)
これでひとまずCinemachineの導入は終わりです。
#3.実際に使ってみる
次にCinemachineを使う上で重要な仮想カメラを配置します。
Cinemachine>からCreateVirtualCameraを選択します。
仮想カメラにあるCinemachineVirtualCameraコンポーネントで、いろいろ設定できて、
Followに設定すると、設定したオブジェクトに追従することができます。
LookAtに設定すると、設定したオブジェクトの方向を向くようになります。
今回は特に設定する必要はないとおもます。自分の場合に合わせて設定してください。
(例えばプレイヤーの移動に合わせたいならFollowに設定するとか)
できたら、もう一つ仮想カメラを同様に作成し、その仮想カメラは見下ろす形にしてください。(一つは見下ろし、もう一つはオブジェクトの近くなど)
###どうやって切り替えるの?
ここまでいろいろ解説しましたが、結局どうやって切り替えるのって話なのですが、CinemachineVirtualCameraのPriorityの値を変えることによって切り替えることができます。具体的にいうと値が大きいほど優先的に表示することができます。
###コードに関して
じゃあどうやってスクリプトで切り替えるんだって話なのですが、勘の言い方ならもう気づいてるかもしれませんが
まずusingが書いてあるところに
using Cinemachine;
と記述します。
その次に追加した分だけの仮想カメラの分だけ下のように記述し追加します。
public CinemachineVirtualCamera virtualcamera(名前は好きなように);
そうしたらあとは、好きなタイミングでPriorityを切り替えればいいので任意のタイミングに
virtualcamera.Priority = 数値(数値は他に比べて大きくする);
と記述すれば切り替えることができます。
###切り替える動き方を変更したい
その場合は普通のカメラについているCinemachineBrainコンポーネントのDefaultBlendを変更すれば良いです。
私は初期ので十分だと思います。詳し説明は他の方が詳しく説明しているのでそれを参照してください。
参考:https://www.mum-meblog.com/entry/how-to-use/cinemachine-scene-change
###実際に調節してゲームに適用してみた例
私が作っているゲームで申し訳ないのですが、今日紹介した内容のみでカメラの動きを再現したものです。
#最後に
今回はBF1のようなカメラワークを実現するためにCinemachineを使って解説してみました。
参考になれば嬉しいです!Twitterのフォローなどよろしくお願いします!では!
https://twitter.com/Upon_Main