エフェクト#

effects
VCIはエフェクトを組み込むことができ、VCIスクリプトからエフェクトの再生を制御できます。
VCIはエフェクトシステムにEffekseerを採用しています。
Effekseerはオープンソースのエフェクト制作ツールです。

エフェクトの制作#

エフェクトの制作にはEffekseer編集ツールを使用します。 こちらからダウンロードしてください。
Effekseer編集ツールの使い方はEffekseer Helpを参照してください。

エフェクト制作の注意点#

  • 以下の機能は使用できません。

    • 背景歪み

    • マテリアル

  • 「描画共通」パネルの「深度テスト」は「オン」にしてください。

    • オフにするとオブジェクトの位置関係を無視して描画されるため、VRにおける立体視の体験が損なわれます。

エフェクトの組み込み#

  1. Effekseer編集ツールで作成したエフェクトをエクスポートします。エクスポート形式は「標準形式(.efk)」を選択してください。

  2. エクスポートしたファイルをUnityのProjectビューにドラッグ&ドロップしてインポートします。エフェクトに使用したテクスチャやモデルも同様にインポートしてください。

  3. インポートしたエフェクトをProjectビューでクリックしてInspectorビューを表示します。Texture Resourcesなどに適切なテクスチャやモデルが設定されていることを確認してください。

  4. VCIのルートより下に配置したGameObjectを選択し、EffekseerEmitterコンポーネントを追加します。このGameObjectの位置からエフェクトが再生されます。

  5. Inspectorビューで EffekseerEmitter コンポーネントの Effect Assetにインポートしたエフェクトを設定します。

EffekseerEmitterのプロパティ#

プロパティー

説明

Effect Asset

再生するエフェクトを指定します。

Play On Start

VCIのロード時にエフェクトを再生するかどうかを指定します。

Is Looping

エフェクトをループ再生するかどうかを指定します。

エフェクトの再生制御#

VCIスクリプトではエフェクトの再生を制御するAPIとしてExportEffekseerが提供されます。
以下はVCIスクリプトからエフェクトの再生と停止を行うサンプルです。

-- GameObject "Effect" にアタッチされた EffekseerEmitter に対応する ExportEffekseer を取得する
local effect = vci.assets.GetEffekseerEmitter("Effect")

-- 掴めるSubItemがVCIに存在しているとする
-- SubItemを掴んだらエフェクトを再生する
function onGrab(_)
    effect.Play() -- 掴んだ人の環境でのみ再生する
    -- effect._ALL_Play() とすると全員の環境で再生する
end

-- SubItemを離したらエフェクトを停止する
function onUngrab(_)
    effect.Stop() -- 離した人の環境でのみ停止する
    -- effect._ALL_Stop() とすると全員の環境で停止する
end