BlackIceCoffeePhenomenon

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

VRChatでConstraintを使った足元オーラパーティクルを出す

久しぶりのVRChatであれこれしたい記事です。


「足元からオーラを出したい」の2020年バージョンです。
Unity2018のParticle systemで追加された機能も含めて紹介します。

ついでに今まではunityのrigid bodyでアバターとの連動を実装していましたが
今回はConstraintで実装してみます。

f:id:yananann:20200502222906g:plain

今回の実装範囲

  • パーティクルで表現するテクスチャーを作成する
  • Particle systemでパーティクルを実装する
  • パーティクルをConstraintでアバターと連動するようにする

 

パーティクルで表現するテクスチャーを作成する。

今回は四角の枠のフレームを作ります。文字にすると「□」です。
作り方はキャンバスの全部を選択した範囲を縮小し、そこから漏れた部分を塗りつぶす方式です。

  1. GIMP起動します。今回はGIMP2.10使います。
  2. 新規作成でこんな感じの設定やります。

    f:id:yananann:20200502223414p:plain

  3. Ctrl+Aで全てを選択し、選択範囲の縮小をします

    f:id:yananann:20200502223437p:plain

    縮小では20くらいにしておきましょう。
    自己主張強めでいくなら25以上でもいいかもしれません。
  4. 選択範囲の反転をして外枠を選択した状態にします。

    f:id:yananann:20200502223449p:plain

  5. 外枠を選択した状態で、塗りつぶしを行います。

    f:id:yananann:20200502223500p:plain

  6. 後はpng形式でファイルを保存します。

    f:id:yananann:20200502223511p:plain


Particle systemでパーティクルを実装する

せっかくなので2018.4.20f1でできることやります。

unity 2018ではBufferModeやRectangleなど様々なアップデートが入っていますが
今回はOrbital Velocityを中心に実装します。
Orbital Velocityは設定した軸を中心に、渦巻くような軌道が作成できます。

 

■下準備
  1. 上で準備したテクスチャーのマテリアルを作成します。
  2. Projectタブ内で右クリック[Create]->[Material]より作成します。

    f:id:yananann:20200502223531p:plain

  3. 作成したマテリアルのシェーダーを
    TintColorは真っ白にし、Alphaを255(不透明)にします。

    f:id:yananann:20200502223543p:plain

 

■作業
  1. アバターの中にCreate Emptyで空のGameObjectを作成します。
  2. 作成したGameObjectの中にParticle Systemを作成します。

    f:id:yananann:20200502223604p:plain

  3. 各パラメーターを以下の設定にします。
    後々変更していって構いません。
    Particle Systemメイン
    ・StartSpeed:0.3
    ・StartSize: 0.04
    ・StartColor:決まった色でもグラデーションでもお好きにどうぞ
    ・Simulation Space:World
    ・Max Particles:100

    Emissionタブ
    ・Rate over Time:15
    Shapeタブ
    ・Angle:50
    ・Shape-Radius:0.1
    Velocity over Lifetimeにチェックを入れます
    OrbitalのZ:0.5
    Size over Lifetimeにチェックを入れます
    ・徐々に消えるようにしたいので右肩下がりの線にチェック
    Rendererタブ
    ・Render Mode:Mesh
     -Mesh:Cube
    ・Material:■下準備で用意したマテリアルを適用
    ・Render Alignment:World

    f:id:yananann:20200502223618p:plain




  4. 足元に設置するためのPositionの設定をします。
    今回はお腹あたりに追従させたいのでGame ObjectのPositionをChestに近づけておきます。
    パーティクルは足元に出したいのでParticle systemのPositionは足元に近づけます。


パーティクルをConstraintでアバターと連動するようにする

  1. Game ObjectのInspectorよりAddComponentでParentConstraintを追加します。

    f:id:yananann:20200502223627p:plain

  2. ParentConstraintのIs Activeにチェックをいれ、Sourcesを[+]で追加しそこにChestを入れます。

    f:id:yananann:20200502223635p:plain

ひとしきりできたら再生ボタンを押してパーティクルが出ていることを確認します。
これでタイトルみたいなのができているはず!

f:id:yananann:20200502222906g:plain

 

他にも面白そうな機能はありますが、私の頭では理解できませんでした。

いかがでしたでしょうか。

 

■おまけ

2020年5月2日時点で自分のアバターに使っているパーティクルの設定です。
かなりランダム性を強めたオーラが放てます

f:id:yananann:20200502224818p:plain

f:id:yananann:20200502224826p:plain