回答編集履歴
1
実験手順を追記
test
CHANGED
@@ -1,3 +1,57 @@
|
|
1
1
|
スクリーンショットを拝見しますと、`Preserve Line Of Sight requires a LookAt target.`という警告が出ております。`Preserve Line Of Sight`という設定項目は見当たりませんが、これは`Avoid Obstacles`を指すようです(昔のバージョンの呼び名が未修正のまま残ってしまった...とかでしょうか)。
|
2
2
|
|
3
3
|
警告に従って、バーチャルカメラの`Look At`に注目対象をセットしてみてはいかがでしょうか。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
**追記**
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
プロジェクトご提示ありがとうございます。下記の手順でバーチャルカメラを再作成してみたところ、とりあえず機能するようにできました。
|
12
|
+
|
13
|
+
手順途中でプロジェクトに元々入っていたCinemachineを削除してPackage Managerから再インストールしています。当初はバーチャルカメラの再作成だけだったのですが、それだとなぜかプレイ前は障害物回避が機能するのにプレイすると効かなくなる現象があったためです。ご質問者さんの場合はもしかしたら不要かもしれませんが、もしそのような現象が起こったらCinemachineの入れ直しも試してみてください。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
- MouseControllの下にあるMain Cameraはヒエラルキーのルート直下に移動する。
|
18
|
+
|
19
|
+
- Main Cameraのコンポーネントのうち、Cinemachine Virtual CameraとCinemachine Colliderは削除する。Cinemachine Virtual Cameraの削除時にMain Cameraの子としてcmという名前の付いたオブジェクトが作られた場合、それも削除する。
|
20
|
+
|
21
|
+
- プロジェクト内の「Cinemachine」フォルダと「Gizmos」フォルダを削除する。削除後、念のためUnityを再起動してプロジェクトを開き直す。
|
22
|
+
|
23
|
+
- メニューの「Window」→「Package Manager」を選択し、あらためてCinemachineをインストールする。
|
24
|
+
|
25
|
+
- メニューの「Cinemachine」→「Create Virtual Camera」を選択しバーチャルカメラを作成する。作成されたオブジェクトの名前はさしあたり「VirtualCamera」に変更する。このバーチャルカメラのヒエラルキー上の位置はルート直下のままとし、MouseControllの下に移動する必要はない。
|
26
|
+
|
27
|
+
※バーチャルカメラ作成後、Main Cameraに自動的にCinemachine Brainがアタッチされていれば正常です。念のためご確認ください。
|
28
|
+
|
29
|
+
- VirtualCameraのCinemachine Virtual CameraコンポーネントのFollowとLook AtにはともにMouseControllをセットする。
|
30
|
+
|
31
|
+
- BodyのBinding ModeをLock To Targetに変更、その下のFollow OffsetのZを調節してカメラがちょうどいい距離に位置するようにする。
|
32
|
+
|
33
|
+
※これによりFollow...つまりMouseControllに対してFollow Offsetだけずれた位置にバーチャルカメラが据え付けられ、MouseControllの移動や回転に合わせてカメラが追従するはずです。
|
34
|
+
|
35
|
+
- AimをHard Look Atに切り替える。
|
36
|
+
|
37
|
+
※飛行機をがっちりカメラ中心に固定したい場合はHard Look Atが適しているかと思います。エイミング方式はComposerのままで、代わりにSoft Zone WidthとSoft Zone Heightを調節してやってもいいでしょう。中心の水色領域の大きさに応じてカメラの追従に遅れが生じて面白いと思います。ですが、うまくパラメーターを調整しないと映像がガタガタしてしまうかもしれません。
|
38
|
+
|
39
|
+
- 一番下のExtensionsのAdd ExtensionでCinemachineColliderを選択する。
|
40
|
+
|
41
|
+
※自動的にCinemachine Colliderがアタッチされ、うまくいけばこの時点でカメラが壁に遮られない位置に移動するかと思います。
|
42
|
+
|
43
|
+
- Cinemachine ColliderコンポーネントのStrategyをPull Camera Forwardに切り替える。
|
44
|
+
|
45
|
+
※カメラを単純に注目対象に寄せることで障害物を回避しようとするPull Camera Forwardに対して、Preserve Camera Heightはカメラの高さを、Preserve Camera Distanceは対象からの距離を維持しようとするそうですが、今回のようなゲームには向いていないかもしれません。
|
46
|
+
|
47
|
+
- Ignore TagはPlayerにして、機体のコライダーオブジェクトであるSphereとCapsule2個のタグをPlayerにする(なんならBodyとMouseControllにもPlayerタグを付けてしまってもいいでしょう)。
|
48
|
+
|
49
|
+
※バーチャルカメラの設定にもよりますが、Damping関係のパラメーターをいじってやるとカメラの追従が遅れ、飛行機が急旋回したときに機体の側面が見えるようにすることもできるでしょう。常時ぴったり機体の真後ろに追従するよりも見栄えがいいかもしれませんが、このとき機体側面のCapsuleによって視線が遮られ、カメラが一気に機体の近くに寄ってしまう現象が起こる可能性があります。コライダーに特定のタグを付け、Cinemachine Colliderの遮蔽判定ではそのタグを無視させると現象を回避できるかと思います。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
下図のように、地面や壁で視線が遮られる位置になるとカメラが機体に寄る動きになりました。パラメーターによっては視点がめまぐるしく変わってプレイしにくいでしょうから、さらにいろいろいじってみるといいかと思います。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
![結果](8bd97c0d5715f4f0ee01c834d90510a9.gif)
|