質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1190閲覧

ChinemachineのColliderを使いたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/05/08 13:18

###問題
http://tsubakit1.hateblo.jp/entry/2018/04/06/235742
このサイトを参考にCinemachineのColliderを使い、カメラが壁を貫通させなくさせようとしたのですが、設定しても機能してくれません。どうすれば良いのでしょうか?
イメージ説明
インスペクタの画面はこんな感じです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/10 06:56

追加してみても警告が消えないんですよね...
Bongo

2019/05/10 09:14

消えないですか...後ほどもっと詳しく見てみようと思いますが、参考としてご質問者さんの場合のバーチャルカメラ作成手順をご説明いただけますでしょうか。私の環境でもこのLookAtを設定しても警告が消えない状態を再現できれば調べやすくなりそうです。Inspectorを見た感じですと、何らかのプレハブインスタンスにバーチャルカメラをアタッチしているように見えますが...
退会済みユーザー

退会済みユーザー

2019/05/11 08:55

Mainカメラにアタッチするものだと解釈してました...まずかったですかね?w
Bongo

2019/05/11 20:04

メインカメラにですか?つまり、メインカメラオブジェクトにCamera、Cinemachine Brain、Cinemachine Virtual Camera、Cinemachine Colliderが同居している状態でしょうか。 試してみたところ、そういうことも可能ではあるようでした。ですがやはりLookAtを設定しているのにCinemachine Colliderが機能しなくなる現象は起こりませんでしたね... 一般的には、バーチャルカメラは「Cinemachine」メニューの「Create Virtual Camera」(または目的に合わせたメニュー項目)で作成し、メインカメラにはCameraとCinemachine Brainだけがアタッチされた状態にするものかと思います。まだ原因を突き止められずすみませんが、もしかするとその特殊なコンポーネント編成が関係しているかもしれません。文章やスクリーンショットでのご説明が困難でしたら、プロジェクトをどこかにアップロードしていただいても私は一向にかまいませんので、どういじっても解決しそうになければそのような形で状況をご提示いただいてもけっこうです。
退会済みユーザー

退会済みユーザー

2019/05/12 03:29

一応分けて作ってみたのですが、警告は消えても動作がいまいちおかしくなりました...
退会済みユーザー

退会済みユーザー

2019/05/17 12:38 編集

今作っているプロジェクトはこれです。 お手数をかけてしまい申し訳ありません...
退会済みユーザー

退会済みユーザー

2019/05/12 03:31

今使っているアセットをCinemachineだけにしました。
退会済みユーザー

退会済みユーザー

2019/05/13 03:53

本当に丁寧な解説までつけてくださり、ありがとうございました!!見事に動作しました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問