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

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

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

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

Unity

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

Q&A

解決済

3回答

4769閲覧

パーティクルの当たり判定を取得したいです

kosho206

総合スコア41

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2020/07/04 05:55

Unityのパーティクルシステムで作れる爆発エフェクトにプレイヤーが当たった時に、爆発によりプレイヤーのオブジェクトが吹き飛ぶようにしたいです。
そのために、プレイヤーにアタッチされているスクリプトに以下のコードを書きました。

//爆発に当たったら吹っ飛ぶ void OnParticleCollision(GameObject other) { Debug.Log("aaa"); if(other.gameObject.tag == "Explosion") { Rb.AddForce(Random.onUnitSphere * 10000f, ForceMode.Impulse); } }

これで爆発に当たったら吹き飛ぶようになると思ったのですが、上手くいきませんでした。
爆発に当たっても、Debug.Logが呼び出されません。
パーティクルシステムのCollisionモジュールの設定は以下です。
イメージ説明
これらの設定で、パーティクルの当たり判定が取得できないのは何故ですか?
分かる方教えてください。

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

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

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

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

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

guest

回答3

0

自己解決

みなさんありがとうございます。
爆発の当たり判定を取得するのは、パーティクルシステムのobjにTriggerのColliderをつけてそれで当たり判定を取得した方が簡単そうだったので、そちらを試しました。
結果、この質問は無事解決できました。

投稿2020/07/09 10:27

kosho206

総合スコア41

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

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

0

それは Particle の粒に当たり判定をつけているのであって、爆発で飛ばしたいのにそういうやり方はしません。Particle の量が多い時に一つ一つの粒に対して当たり判定をするのは処理の負荷がかかり過ぎますからね。
また OnParticleCollision は "Particle System がアタッチされているオブジェクトにアタッチしたスクリプト" の方に書かなければ機能しないはずです。

普通にやるとしたら、Particle System と同じオブジェクトにスクリプトをアタッチして、Physics.OverlapSphere に入った範囲の弾き飛ばしたい Rigidbody に AddForce することになります。

あとは Detonator Explosion Framework を参考にするとよいでしょう。

投稿2020/07/04 14:33

bboydaisuke

総合スコア5308

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

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

kosho206

2020/07/05 01:25

教えて頂いたアセットをimportして見たのですがよくわかりませんでした。 「Physics.OverlapSpahere入った範囲の」とありますが、それは具体的にどのようなコードを書けばできるのですか?
bboydaisuke

2020/07/09 10:33 編集

Physics.OverlapSphere でググると山ほどみつかりますよ。
guest

0

調べて出てきた情報での回答にはなってしまいますが、
Typeを「World」にしないとオブジェクトとの判定ができないみたいなので、それが原因かもしれません。

パーティクルに当たり判定を実装する

投稿2020/07/04 08:01

yuuyu

総合スコア1139

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問