VRChatの絵文字機能みたいな感じで、絵文字をパーティクルで空間に飛ばしたい
絵文字画像用意
別にあのUnicodeのEmojiじゃなくていいんだけど、どうやって用意しようかな~🥺
ちなみにVirtualCastでUniCodeのEmojiをUnityで扱った記事があった。大変そう><
https://virtualcast.jp/blog/2019/10/emoji/
OpenEmoji
単色のアイコンならいろいろサイトはあるけど、カラフルなアイコンがあるサイトいまいち知らない・・・探せばいろいろあるだろうけど。
OpenEmojiというサイトがあった
いろいろなEmojiがあって、
個別でsvgやpngでダウンロードできる。全部まとめてもできる。
カラフルだし良きー
全部誰かが作ってくれている。ぴえん🥺(PladingFace)はあんまりぴえん感がなかった
https://openmoji.org/library/#search=Pleading&emoji=1F97A
ライセンスはCC-BY-4。著作権表記が必要
All emojis designed by OpenMoji – the open-source emoji and icon project. License: CC BY-SA 4.0
とてもありがたいけど、表記必要なの忘れるとめんどくさいから、MaterialDesignでアイコンダウンロードして自分で色付けたほうが良いかな
あっ、でも拍手とかかなさそう
パーティクル
久々にParticle使う
Create>Effect>ParticleSystem
Perticle用のマテリアルを作る。
ShaderはParticles>StandardUnlit。もしくはMobile>Particle>?でもいい
RenderingModeをCutoutなどにする。Albedoに画像入れる
これをPerticleにぽいってする。RendereのMaterialに入ってたらいい
これでできたー
あとはLooping外したり、数値をいろいろ減らした。
ボタン押したら出てくる
ボタン押したら作ったParticleが出てくるようにする。(下のがボタン)
方法はいろいろありそう
パーティクルをプレハブ化して、Instantiateする方法
パーティクルをプレハブ化してGameObjectとしてInstantiateする
パーティクルのEmit()を使う
ParticleSyetemでパーティクルのパラメーターをいじれる
Emit(数字)でパーティクルが出る
この場合、パーティクルはPlayOnAwakeをオフにしてシーンにおいておく
で、スクリプトのInspectorにセット
こちらのほうがInstantiateするよりコストが安いって
オブジェクトの生成・破棄は結構負荷が高いです。また、ParticleSystemは結構多くのパラメータを持つオブジェクトであり、インスタンス化・破棄で結構多くのCPU・メモリを喰います。
その点、ParticleStstem.Emitでパーティクルを生成しまくる場合、ParticleSystemを量産するよりかなり安くパーティクル表現出来るっぽいです。
パーティクルシステムが1個だけの場合はそんなに変わらないかな?
マテリアルだけ変える
今回ParticleSystemを複数用意したけど、一つのParticleSystemでマテリアルだけ変えてもよさそう。
スクリプトからRendereを変えるにはParticleRendererをGetComponentする
こんな感じでできた。
Textureだけ変える
もっといえば、マテリアルも共通にしてTextureだけ変えてもよさそう
テクスチャ名はMaterial>歯車>EditのPropertiesで見れる
どれがいいんだろう
最後に
とりあえずできた
Release パーティクルで絵文字が飛ぶやつ · bibinba/Haihu · GitHub
本格的なパーティクルは昔本でやって以来。スクリプトで操作するのは初めてだと思う。いつも出しっぱなし
bibinbaleo.hatenablog.com