BlackIceCoffeePhenomenon

溶け出す氷によって味が薄くなると併せ、味覚が苦味に慣れていくことで、加速度的に味覚への刺激が減衰する現象に関するブログです。

VRChatでお菓子のパーティクルをぶっ放す。

もちろん、そのままでも楽しめるのですが
やっぱり何か驚くものや喜ぶものをやりたいよね。

モノを持たせるものから、またちょっと発展して
パーティクルで、あらゆるものをぶっ放すコーナーです。

こんなことができるようになります。

f:id:yananann:20181025222233p:plain

 

yananann.hatenadiary.jp

この記事の応用みたいな感じです。

 

 

パーティクルには大きく2つあります(実際はそれ以上あると思うけど)
・発生元に追従するもの(Local)
・発生後、ワールドのルールに従うもの(World)

 

そのうち発生するものに追従するLocalな方は、
モノを持たせるところをパーティクルにすることで実装できます。
自分が動くと、今放たれてるものも動くというものです。
自分から指す後光とかそういうのを実装するのに向いてます。

 

今回紹介するのは、発生した後はワールドのルールに則るものです。
放たれたパーティクルは、放つ主の動きに影響されません。
その上、何かあらゆるものを放つようになります。

 

これを実装するのに必要な要素は主に3点で構成されます。
・ParticleSystem(粒子状に何かを放つもの)
・RigidBodyとFixedJoint(発生元の挙動を別の要素に委任するもの)
・Particleで放つものにテクスチャーを適用するもの

 

全体の流れ

0,下準備
1,パーティクルの実装(何かを放つ設定)
2,パーティクルにテクスチャーを設定する
3,放たれたパーティクルの挙動をワールドに委任する
4,パーティクルを放っている最中のアニメーションを作成する
5,カスタムオーバーライドの設定(パーティクルを放つトリガーの設定)
6,ベースのアバターにカスタムオーバーライドを設定する

 

0,下準備

 

yananann.hatenadiary.jp

 これの「Unityで詳細を設定しアップロードする」の
 通常のアバターの出力手前の準備まで済ませます。

 

1,パーティクルの実装(何かを放つ設定)

  1.  パーティクルを出したい部位を右クリックし「ParticleSystem」を選択します。
     Hierarchyより追加されたParticleSystemをクリックすると何か出るはず

    f:id:yananann:20181025222406p:plain

  2. パーティクルの細かい内容を設定する
    細かい役割についてはこちらを見てもらいたい。
    ここではメモがてらにそれっぽいパラメータを残します。

    その1 Unityのパーティクル「Shuriken」

    f:id:yananann:20181025222530p:plain


    TranceformのRotationのXを270にする
    ParticleSystemタブ
    StartSpeedを0.5にします。大きいほど爆速です。
    StartSizeを0.1にします。大きさです。
    StartColorを好きな色にします。違いがわかるようになるといいよね
    GravityModifierを0.05にして放ったものがやんわり落ちるようにします
    SimulationSpaceをWorldにします。
    (SimulationSpaceをLocalにするとパーティクルが自身に追従します。)

    Shapeタブ
     Radiusを0.01にします。数値が小さいほど発射元が絞られます。指先なので特に絞りたいので0.01

2,パーティクルにテクスチャーを設定する

  1. テクスチャ画像を用意する
    背景を透明にし、PNG形式で出力する

    f:id:yananann:20181025222700p:plain

  2. 用意した画像をAssetsに入れ、「Alpha Is Transparency」を有効にする

    f:id:yananann:20181025222735p:plain

  3. Assets内を右クリックしCreate→Materialで空のマテリアルを作成します。
  4. シェーダーをUnlit/Tranparentにしてテクスチャを用意した画像にします

    f:id:yananann:20181025222842p:plain

  5. ParticleSystemに戻り、TextureSheetAnimationタブを選択します。
    赤丸を選択することで有効にでき、以下の設定を行います。
    (左のHierarchyでParticleSystemの位置が変ですが気にしないでください。)
     TilesのYを表示したい画像の数にします。10個なので10にしました
     AnimationをSingle Rowにします。
     Rendererタブに移動します。
     Materialの項目で、先ほど作成したマテリアルを指定します
     ここまでやったら用意した画像が飛び始めるはず。

    f:id:yananann:20181025223023p:plain

3,放たれたパーティクルの挙動をワールドに移譲する

  1.  Particleのある所にCreateEmptyを作成します。ここではGameObjectのままいきます。

    f:id:yananann:20181025223209p:plain

  2. GameObjectの中にParticleSystemを入れ、GameObjectごとアーマチュアの外に出します。
  3. Transform内のScaleを全部1にします。
    (PositionやRotationは指先の座標や角度の記録があるので触らないでください)

    f:id:yananann:20181025223231p:plain

  4. 人差し指先をAddComponentでRigidbodyを追加します。
    AngularDragを0に、UseGravityをオフにします

    f:id:yananann:20181025223306p:plain

    f:id:yananann:20181025223320p:plain

  5. GameObjectを選択しAddComponentでFixedJointを追加します。(Rigidbodyもセットで追加されます)
  6. RigidbodyのAbgularDragを0に、UseGravityをオフにします
  7. FixedJointのConnectedBodyで人差し指先を選択します。

    f:id:yananann:20181025223337p:plain

 

4,パーティクルを放っている最中のアニメーションを作成する

 ここから先は、前回のモノを持たせるの1-5まできたところです。
 せっかくなので手順書いちゃいます。

  1. 用意したアバターを複製します。今回は右クリックでDuplicate

    f:id:yananann:20181025223453p:plain

  2. コピー元のParticleSystemを無効にします(赤丸)
  3. Assets直下にanimationフォルダを作成し、前回ブログであったDRAWPOINTを入れます
    (今回は指さしで放射したいのでDRAWPOINTのみです)
    DRAWPOINTをコピーしたアバターに入れるとコントローラーが作成されます(緑丸のやつ)f:id:yananann:20181025223512p:plain

  4. メニューよりWindow→AnimationをクリックしAnimationウインドウを出します
  5. コピーしたアバターを選択し、DRAWPOINTの部分よりクリップを作成します。
    今回はact_particleという名前にします。

    f:id:yananann:20181025223628p:plain

  6. DRAWPOINTから赤丸をクリックし全部をCtrl+cでコピーします
  7. タブをact_particleにして0:00の部分に貼り付けます。

    f:id:yananann:20181025223651p:plain

  8. 青丸で囲んだ丸が選択されている状態で、コピーしたアバターのParticleSystemを2回クリックします (右端のやつがほんのり赤ければOK。Animationの一番下に追加されてるかな?)

    f:id:yananann:20181025223709p:plain

  9. 0:00のすべてをコピーし、0:01に貼り付け、青丸の部分を選択されてない状態にします。

    f:id:yananann:20181025223725p:plain

5,カスタムオーバーライドの設定(パーティクルを放つトリガーの設定)

Animationウインドウは閉じて、Assets→VRCSDK→Examples→SampleAssets→Animetionに移動しますCustomOverrideEmptyを複製し、Animationにコピーします

f:id:yananann:20181025223811p:plain

 

Animationに移動したCustomOverrideEmptyを選択するとInspectorにたくさん出てきます。

今回はFINGERPOINT(指さし)でパーティクルを出したいので、

FINGERPOINTにact_particleを設定します。

f:id:yananann:20181025223852p:plain

 

6,ベースのアバターにカスタムオーバーライドを設定する

7,アップロードとかの後始末

赤線と赤丸を参考に、カスタムオーバーライドを

メインのアバターCustomStandingAnimsに入れます。

複製したアバターの方を非表示にします。

f:id:yananann:20181025224001p:plain

 

後はアップロードしたらおしまい。