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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

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

Q&A

解決済

1回答

2825閲覧

OnCollisionEnterが反応しない

suzu1122

総合スコア37

Unity3D

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

0グッド

0クリップ

投稿2019/02/08 02:11

C#

1 private void Start() 2 { 3 4 GameObject TargetTable = GameObject.Find("Table"); 5 anim.SetBool("Walk", true); 6 7 Vector3 Chair = TargetTable.transform.Find("Chair1").position; 8 m_navAgent.destination = Chair; 9 10 } 11 12 void OnCollisionEnter(Collision col) 13 { 14 Debug.Log(col); 15 Debug.Log("#########################"); 16 }

こんな感じのコードを書きました。
動かしたいobjectにridgebody boxcollider, 衝突させたい物体(この場合Chair1)にはboxcolliderをつけました.
物体が移動してぶつかってはいるのですがDebug.Logに何も表示されません。

動かしたいobject自体はasset storeで購入したもので、CharacterControllerではないです。
(念の為OnControllerColliderHitでも試しました。)
Chair1にridgebodyがないからかな、とも思いましたがそれでも反応しませんでした。

どうすれば反応するようになるでしょうか。

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

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

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

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

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

Bongo

2019/02/08 23:20

再現実験をやってみようかと思いましたのでおうかがいしますが、この動かしたいオブジェクトのRigidbodyの「Is Kinematic」はオンになっているでしょうか?そしてこのオブジェクトにはNavMeshAgentが付いていて、それによって目的地まで移動するよう作られている...ということでいいでしょうか?
suzu1122

2019/02/10 08:09

その認識で合っています。 また 動かしたいオブジェクト : Is Kinematic ON / OFF 目的地(Chair1): Is Kinematic ON / OFF のそれぞれ4通りを試しましたが、どれもlogが表示されませんでした。
guest

回答1

0

ベストアンサー

まだ原因特定まではできておりませんが、試した結果とご確認いただきたい点についてコメントいたします。

まず、キャラクターオブジェクトの側は空間内を動くコライダーであり、かつ動きはNavMeshAgentによって制御されています。NavMesh Agent を他のコンポーネントと共に使う - Unity マニュアルによると、このキャラクターオブジェクトにはRigidbodyを付けた上でIs Kinematicをオンにするべきでしょう。
そしてコライダー - Unity マニュアルによれば、衝突する側はKinematicですので、衝突される側であるChair1にはRigidbodyを付けた上でIs Kinematicはオフにする必要があるはずです。私の試した限りでは、この組み合わせでちゃんとOnCollisionEnterが発生しました。

ですが、ご質問者さんはすでに4通りのIs Kinematicの組み合わせを試しており、衝突する側のIs Kinematicをオン、衝突される側をオフにするパターンでもダメだったのですよね?
あとは思いつく可能性としては、衝突する側・される側のいずれかのコライダーのIs Triggerがオンになっている...ぐらいでしょうか。いずれか一方でもトリガーになっている状態では、OnCollisionEnterは発生しなくなるはずです。

もしこれでもダメなようでしたら、ご質問者さんの状況をもっと詳しく再現して試してみる必要がありそうです。衝突する側とされる側のインスペクタのスクリーンショットをご提示いただけますでしょうか?

投稿2019/02/11 00:56

Bongo

総合スコア10807

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

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

suzu1122

2019/05/12 13:58

返信が遅くなりすみません。 結局こちらの方法ではできず、実装をガラッと変えて力技で同様の動きをするようにしました。 あらてめて振り返ってみると、もしかしたら、こちらに記載してない同時に動いている別のscriptが悪さしているような気がしました。 ご丁寧にいただいたのに、こちら遅くなりすみませんでした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問