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

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

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

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

Unity

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

Q&A

解決済

2回答

4426閲覧

[Unity]ParticleSystemで衝突した位置を取得したい

rituta

総合スコア41

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2017/01/25 11:13

編集2017/01/28 07:38

ShurikenParticleSystemでレーザー光線のようなものを作ったのですが、
そのレーザー光線がオブジェクトに衝突した時、衝突した位置を調べるコードを教えてください。(ShurikenParticleSystemのCollisionを使用しています。)

OnParticleCollision関数で取得しようとしたのですができませんでした。(できるのかもしれないがわからなかった)
Particleが衝突した位置を調べるとき、どのような書き方が一般的なのでしょうか。

よろしくお願いします。

イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

パーティクルの粒子、1粒単位の位置を取得したいということでしょうか。
その場合はParticleSystemのtriggerにチェックを入れてcallbackで処理するのが良いと思います。

下記にサンプルを作ってみましたので、ダウンロードしてmainシーンを実行してみてください
Cubeに当たったものが赤色になり、そのパーティクルの位置をログ出力しています

http://22.gigafile.nu/0205-e0cb734db7a5533c0ecc1624e0fee5d7c

投稿2017/01/28 16:09

Qoo

総合スコア1249

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

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

rituta

2017/01/29 05:48

サンプルまで用意してくださってありがとうございます。 助かりました。
guest

0

下記のリンクにサンプルコードも記載されているので参考になると思います。
衝突位置はgameObjectのtransformから取れると思います。

パーティクルに衝突判定をつける

パーティクルその3 -パーティクルの衝突判定・サブエミッタ(弾丸を作る)

投稿2017/01/26 14:39

Qoo

総合スコア1249

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

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

rituta

2017/01/27 03:24

gameObjectのtransformからとると、オブジェクトのギズモの位置がわかるだけであって衝突した正確な位置がわからないのですがどうしたらいいでしょうか?
Qoo

2017/01/28 06:01

キズモはScene ビューの右上に表示されるアイコンでオブジェクトの位置や向きを示すものです。 キズモとはこれのことです http://cdn-ak.f.st-hatena.com/images/fotolife/n/nakamura001/20120929/20120929220318.png 下記で取得できると思いますがどうでしょうか。 void OnParticleCollision(GameObject objct){  Debug.Log (objct.transform.position);//衝突したゲームオブジェクトの位置(X,Y,Z)  Debug.Log (objct.transform.position.x);//衝突したゲームオブジェクトのX位置のみを取得する場合  Debug.Log (objct.transform.position.y);//衝突したゲームオブジェクトのY位置のみを取得する場合  Debug.Log (objct.transform.position.z);//衝突したゲームオブジェクトのZ位置のみを取得する場合 } youtubeに動画もあったので一度トライしてみて頂ければと思います。 https://www.youtube.com/watch?v=LEhOiLW_API
rituta

2017/01/28 07:48

そうなんですね。 オブジェクトを選択すると表示される3軸をそう呼んでしまっていました。すみません。 質問に画像を追加しました。 試してみましたが取得できるのは画像にあるcubeの3軸で、particleの衝突位置は取得できませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問