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

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

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

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

Unity

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

Q&A

解決済

1回答

2993閲覧

Unityで現在地にパーティクルを出現させる方法

agen44

総合スコア26

C#

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

Unity

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

0グッド

1クリップ

投稿2016/12/16 15:30

編集2016/12/16 16:18

上下キーなどでカメラを操作していても、
**動いているカメラの現在座標を取得して、その座標にパーティクルを出現させる方法**を教えていただけないでしょうか。

パーティクルはあらかじめ作ってあるものをヒエラルキーから呼び出したいです。

また、「カメラが進んでいるとき」と「後退しているとき」で異なるパーティクルを再生したいのですが、
この際、「現在のカメラの座標−1フレーム前のカメラの座標>0」のように、
1フレーム前のカメラの座標を取得することが必要でしょうか。
その場合、**1フレーム前のカメラの座標を取得する方法**も合わせて伺いたいです。

初心者でコードの書き方がわかりません。
初歩的な内容で申し訳ないのですが、
どうぞよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

簡単に書くならこんな感じでしょうか。

C#

1private Transform camera; 2private ParticleSystem particleObj; //publicにしてインスペクターからD&Dさせてもよい 3 4private Vector3 beforeCameraPosition; //1フレーム前のカメラ位置 5 6void Start () { 7 camera = Camera.main.transform; //カメラにMainCameraタグを付けていない場合は適宜調整してください。 8 particleObj = GameObject.Find ("particle1").GetComponent<ParticleSystem>(); //particle1というオブジェクトが存在しないとエラー起こすので注意 9} 10 11void Update () { 12 if (camera != null) { 13 //現在のカメラの位置 14 Vector3 nowCameraPosition = camera.potision; 15 16 //前回のカメラの位置と比較(とりあえず例としてYだけ比較) 17 if (beforeCameraPosition != null && beforeCameraPosition.y <= nowCameraPosition.y) { 18 //1フレーム前よりも現在の方がY値が大きい時はここの処理を行う 19 particleObj.transform.position = nowCameraPosition; 20 particleObj.Play(); 21 } 22 23 //現在位置を保存 24 beforeCameraPosition = camera.potision; 25 } 26}

※「パーティクルオブジェクトは消滅しない」ことを前提としたコードなので、
必要に応じて適宜修正してください。

>1フレーム前のカメラの座標を取得する方法
Updateは毎フレーム呼ばれます。
前回のUpdateの最後に保存した座標(beforeCameraPosition)と現在の座標を比較することでどの方向に移動したかが分かります。

「どちらが進行方向なのか(どう動いていたら前進なのか)」はゲームにより異なると思いますので、
ご自分で調整してください。
(ちなみにVector3形式なので「beforeCameraPosition > nowCameraPosition」とかやってもエラーになります)

投稿2016/12/19 08:38

sakura_hana

総合スコア11427

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

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

agen44

2016/12/22 14:05 編集

ありがとうございます!解決しました! 他にも再生したいパーティクルなどあったのですが、それもきちんとできました! わかりやすく丁寧に回答してくださって本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問