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

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

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

Q&A

解決済

1回答

417閲覧

UnityのParticle Systemで、エミッターと発生済みパーティクルとを切り離した表示優先制御の方法を教えて下さい

drednote

総合スコア336

0グッド

0クリップ

投稿2022/06/14 04:38

Unity 2Dで、Particle Systemを使用してスプライト1枚絵の周りをくるくる(奥へ行ったり手前にきたり)するようなフェアリーダスト的パーティクルを作成したいと思っています。
Particleの表示優先自体はParticle System RendererのSorting Orderを使ったり、あるいはShapeのPositionのZ座標を増減させたりすると制御出来るのですが、エミッタが一枚絵の手前に来るとその瞬間に、裏で発生していたParticleが全部手前にパッと出てきてしまいます。
また奥に隠れる時も、エミッタが一枚絵より奥に行った瞬間に既に発生していたパーティクルが全部奥に隠れてしまいます。
既に発生したパーティクルとエミッタとを切り離したいのですが、どうすれば良いでしょうか?

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

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

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

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

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

Bongo

2022/06/14 10:44

その一枚絵は、半透明の部分を持つ(完全透明または完全不透明だけでなく、中間的なアルファの部分がある)スプライトでしょうか? だいぶ昔の話になってしまいますが、「Unityで2D画像を旋回するパーティクルの表現」(https://teratail.com/questions/127937 )とのご質問を見かけまして、スプライト側のZWriteをオンにするのはどうかと提案させていただいたことがありました。 さいわいあの時のご質問者さんは半透明部分を持たないスプライトをお使いだったため、この手が適用できたようです。ですが半透明部分のあるスプライトでも自然に見せたい場合は別の手を考える必要があるかと思います。
drednote

2022/06/14 11:12

現在の想定ではαチャンネル無し画像の予定なので、行けそうな感じですね。明日確認してみます。
guest

回答1

0

自己解決

Bongoさん有り難うございます。上手く行きました。
(投稿が回答に来てなかったので自己解決扱いになってしまいますが、Bongoさんに頂いた回答で解決です)
https://teratail.com/questions/127937に貼ってあるシェーダースクリプトをキャラ側に適用してパーティクルエミッタのZ座標をアニメーションしてやることで上手くまわりを回り出しました。

ところで、元になったSprites-Default.shaderの内容というのはどこにあるのでしょう?
インストールしてあるUnityの中を探してもファイルは見当たりませんし、プロジェクトの中にもありません。
どこから持ってきたのでしょう?

投稿2022/06/15 02:26

drednote

総合スコア336

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

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

Bongo

2022/06/15 05:22

うまくいったようで安心しました。特に問題なさそうでしたら自己解決として閉じてしまってください。 シェーダーについては、ダウンロードアーカイブ(https://unity3d.com/jp/get-unity/download/archive )から入手可能なはずです。ダウンロードボタンを押すと開くメニューの中から「ビルトインシェーダー」を選んでみてください。Sprites-Default.shaderはDefaultResourcesExtraフォルダに入っているかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問