###問題
http://tsubakit1.hateblo.jp/entry/2018/04/06/235742
このサイトを参考にCinemachineのColliderを使い、カメラが壁を貫通させなくさせようとしたのですが、設定しても機能してくれません。どうすれば良いのでしょうか?
インスペクタの画面はこんな感じです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
スクリーンショットを拝見しますと、Preserve Line Of Sight requires a LookAt target.
という警告が出ております。Preserve Line Of Sight
という設定項目は見当たりませんが、これはAvoid Obstacles
を指すようです(昔のバージョンの呼び名が未修正のまま残ってしまった...とかでしょうか)。
警告に従って、バーチャルカメラのLook At
に注目対象をセットしてみてはいかがでしょうか。
追記
プロジェクトご提示ありがとうございます。下記の手順でバーチャルカメラを再作成してみたところ、とりあえず機能するようにできました。
手順途中でプロジェクトに元々入っていたCinemachineを削除してPackage Managerから再インストールしています。当初はバーチャルカメラの再作成だけだったのですが、それだとなぜかプレイ前は障害物回避が機能するのにプレイすると効かなくなる現象があったためです。ご質問者さんの場合はもしかしたら不要かもしれませんが、もしそのような現象が起こったらCinemachineの入れ直しも試してみてください。
- MouseControllの下にあるMain Cameraはヒエラルキーのルート直下に移動する。
- Main Cameraのコンポーネントのうち、Cinemachine Virtual CameraとCinemachine Colliderは削除する。Cinemachine Virtual Cameraの削除時にMain Cameraの子としてcmという名前の付いたオブジェクトが作られた場合、それも削除する。
- プロジェクト内の「Cinemachine」フォルダと「Gizmos」フォルダを削除する。削除後、念のためUnityを再起動してプロジェクトを開き直す。
- メニューの「Window」→「Package Manager」を選択し、あらためてCinemachineをインストールする。
- メニューの「Cinemachine」→「Create Virtual Camera」を選択しバーチャルカメラを作成する。作成されたオブジェクトの名前はさしあたり「VirtualCamera」に変更する。このバーチャルカメラのヒエラルキー上の位置はルート直下のままとし、MouseControllの下に移動する必要はない。
※バーチャルカメラ作成後、Main Cameraに自動的にCinemachine Brainがアタッチされていれば正常です。念のためご確認ください。
- VirtualCameraのCinemachine Virtual CameraコンポーネントのFollowとLook AtにはともにMouseControllをセットする。
- BodyのBinding ModeをLock To Targetに変更、その下のFollow OffsetのZを調節してカメラがちょうどいい距離に位置するようにする。
※これによりFollow...つまりMouseControllに対してFollow Offsetだけずれた位置にバーチャルカメラが据え付けられ、MouseControllの移動や回転に合わせてカメラが追従するはずです。
- AimをHard Look Atに切り替える。
※飛行機をがっちりカメラ中心に固定したい場合はHard Look Atが適しているかと思います。エイミング方式はComposerのままで、代わりにSoft Zone WidthとSoft Zone Heightを調節してやってもいいでしょう。中心の水色領域の大きさに応じてカメラの追従に遅れが生じて面白いと思います。ですが、うまくパラメーターを調整しないと映像がガタガタしてしまうかもしれません。
- 一番下のExtensionsのAdd ExtensionでCinemachineColliderを選択する。
※自動的にCinemachine Colliderがアタッチされ、うまくいけばこの時点でカメラが壁に遮られない位置に移動するかと思います。
- Cinemachine ColliderコンポーネントのStrategyをPull Camera Forwardに切り替える。
※カメラを単純に注目対象に寄せることで障害物を回避しようとするPull Camera Forwardに対して、Preserve Camera Heightはカメラの高さを、Preserve Camera Distanceは対象からの距離を維持しようとするそうですが、今回のようなゲームには向いていないかもしれません。
- Ignore TagはPlayerにして、機体のコライダーオブジェクトであるSphereとCapsule2個のタグをPlayerにする(なんならBodyとMouseControllにもPlayerタグを付けてしまってもいいでしょう)。
※バーチャルカメラの設定にもよりますが、Damping関係のパラメーターをいじってやるとカメラの追従が遅れ、飛行機が急旋回したときに機体の側面が見えるようにすることもできるでしょう。常時ぴったり機体の真後ろに追従するよりも見栄えがいいかもしれませんが、このとき機体側面のCapsuleによって視線が遮られ、カメラが一気に機体の近くに寄ってしまう現象が起こる可能性があります。コライダーに特定のタグを付け、Cinemachine Colliderの遮蔽判定ではそのタグを無視させると現象を回避できるかと思います。
下図のように、地面や壁で視線が遮られる位置になるとカメラが機体に寄る動きになりました。パラメーターによっては視点がめまぐるしく変わってプレイしにくいでしょうから、さらにいろいろいじってみるといいかと思います。
投稿2019/05/09 21:43
編集2019/05/12 11:17総合スコア10807
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/10 06:56
2019/05/10 09:14
退会済みユーザー
2019/05/11 08:55
2019/05/11 20:04
退会済みユーザー
2019/05/12 03:29
退会済みユーザー
2019/05/17 12:38 編集
退会済みユーザー
2019/05/12 03:31
退会済みユーザー
2019/05/13 03:53