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

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

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

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

Unity

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

Q&A

解決済

1回答

7204閲覧

Unityで現在地に一度だけパーティクルを再生する

agen44

総合スコア26

C#

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

Unity

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

0グッド

0クリップ

投稿2016/12/17 11:55

スペースキーを押している間カメラが上昇し、離すと下降するシステムを作っています。

やりたいことは、
「地面に落ちたとき、一度だけパーティクルを再生」
と、
「高さが50に来たときパーティクルを再生」
なのですが、それぞれで問題が起こりました。

まず、「地面に落ちたとき、一度だけパーティクルを再生」ですが、
地面の高さが10なので、y=10のときあらかじめ設置したパーティクルを再生するスクリプトをカメラに付けました。

C#

1if (transform.position.y<=10) { 2 transform.position = new Vector3(-9f, 10, 4f); 3 //下降中に高さが10より下にならないようにしています 4 var PS2 = GameObject.Find ("particle2"); 5 PS2.GetComponent<ParticleSystem>().Play (); 6}

しかしこれだと、パーティクルのループは外していても、
y=10にいる間は再生が繰り返されてしまいます。
地面に落ちた瞬間の一回だけ再生させる方法はないでしょうか。

また、「高さが50に来たときパーティクルを再生」ですが、
カメラの座標の位置に再生するようにすると、
(またはあらかじめy=50に設置しても)
その場で再生はされても、再生が続いている間はカメラの動きについてこないので、
例えば上昇中に再生されるとスーン…と下の方に置いていかれてしまいます。
再生中もカメラの動きについてくる方法はないでしょうか。
(親子関係にすると、カメラに付けたMouseLookスクリプトのせいか、
視点が変わると子パーティクルも回転して見えなくなってしまいます)
コードはこうなっています。

C#

1if (transform.position.y>=50&&transform.position.y<=50) { 2 var PS1 = GameObject.Find ("particle1"); 3 GameObject.Find("particle1").transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z); 4 PS1.GetComponent<ParticleSystem>().Play (); 5}

両方または片方でも良いので、解決方法を教えていただけませんか。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

1つ目の質問に関しては、同じ内容の過去質問に回答致しました。
(多重投稿は二度手間になる可能性があるのでおやめください)

2つ目の質問に関しては、
パーティクルオブジェクトに「カメラと同じ位置に移動する」スクリプトを付けるのが手っ取り早いかと思います。
以下に例を記載します。

C#

1private Transform camera; 2 3void Start () { 4 camera = Camera.main.transform; //カメラにMainCameraタグを付けていない場合は適宜調整してください。 5} 6 7void Update() { 8 if (camera != null) { 9 //カメラと同じ位置に移動する 10 transform.position = camera.position; 11 } 12}

投稿2016/12/19 08:05

sakura_hana

総合スコア11425

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

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

agen44

2016/12/22 11:41

解決しました!ありがとうございます! 私一人では延々と悩んでいるだけだったので、このサイトに登録して本当に良かったです、助かりました。 多重投稿についてですが、 以前の質問時には私自身何がわからないかも少し曖昧で、そのあとまた整理して新しく質問し直そうと思い、まだ回答が0だったときに以前の質問を削除申請していたのですが、どうやら却下されていました。 他の人のためになる場合もあるので規定に沿わない申請は認められないのですね。 初心者とはいえ横暴なことをしてしまい本当にすみませんでした。 これからはこういう場合も編集で質問し直していきます。 過去の投稿にもひとつひとつ丁寧に回答してくださって本当にありがとうございます! 取り急ぎ解決したものから順にコメント失礼いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問