Last Updated 2024.12.16
Effekseer で作ったエフェクトを、Unityで使用するための個人的な覚え書きです。
基本構文のおさらい
まず、Effekseerエフェクトを使用するスクリプトの冒頭、usingディレクティブに
using Effekseer;// Effekseerエフェクトを使用
を追記するのを忘れないこと。
あとは、エフェクト再生を実行したい部分で
// エフェクトの取得
EffekseerEffectAsset effect = Resources.Load("※データ名");
// 指定の位置でエフェクトを再生する(※Vector3型で指定する。今回の場合は2Pの位置)
EffekseerHandle handle = EffekseerSystem.PlayEffect(effect, _2Pposition);// 回転を指定する場合は追記
handle.SetRotation(transform.rotation);
ただし、現在のUnityだとResourcesフォルダを参照するやり方は非推奨となっているため、このまま使用するのは避けたいところです。
Resourcesフォルダを参照しない場合
インスタンスフィールドで定義する場合(public class ×× : MonoBehaviour~からvoid Start()の間に記述していくアレ)は……
public EffekseerEffectAsset a;// ※aの部分が任意と書けば通るので
▼あとはUnityエディターのインスペクター欄から設定するだけでOKです。
※拡張子が《.efkefc》の方ではなく、Unityにドロップした際に自動で作成される水色の玉アイコン《.asset》の方を設定します。
↓上記の呼び出し記述サンプル。《Effect》スクリプトは事前に習得しておく。
// 2Pキャラの現在位置にエフェクトを再生する
EffekseerHandle handle = EffekseerSystem.PlayEffect(effect.forceBind.start, _2Pposition);
自分の場合、対戦シーン中は壊れない空のオブジェクトに、共用エフェクト(ヒットエフェクトや接地した際の衝撃波等)を管理するスクリプトを取り付け、そこから読み込む方式でいこうかと考えてます。
エフェクトの表示が地面と干渉する問題
Effekseerエフェクトが 地面、あるいは 床(Plan)の表示と干渉してしまう問題について。
↑の画像のように、高さ0の位置に表示されるエフェクトが、地面の表示と干渉する場合
画面左側、オレンジ色の立方体アイコンを選択
「描画共通」ウインドウ内の《深度テスト》という項目に、デフォルトの状態だとチェックが入ってるので、ここのチェックを外します。
これだけで、地面の表示と干渉はしなくなる筈ですが──エフェクトの色合いや透明度、Scene内の環境光の設定(特にIntensity)次第では見えにくかったりするので、そういう場合は往復で目視確認しながら調整するしかないかもしれません。ブレンドを ”加算" にするとかも試してみて下さい。
暗い場所ならエミッシブ倍率の値を少し上げるだけで改善するのですが……
Effekseer内で床を表示する方法
上記内容の補足として。
地面とエフェクトの表示が干渉しないか、Effekseer内で確認する方法も残しておきます。
画面上部のメニューバー > [ウインドウ] で表示されるアイコン一覧の中から
虹色のアイコン [環境] を選択。
地面のタブから [地面の表示] にチェックを入れると、制作窓に床が表示されるようになります。
Unityで使用する場合のエクスポート方法
▼画面上部のメニューバー
[ファイル] > [エクスポート] から『標準形式』の方を選択。
あとは出力された拡張子《.efk》のファイルを、UnityのProject欄のファイル置き場にドラッグ&ドロップすればOKです。自動的に水色の玉アイコンのassetファイルが作成されます。
※予め、使用するプロジェクトに《EffekseerForUnity》のインポートが必要です。
テクスチャー画像を置く場所について
エフェクトにテクスチャー画像を使用している場合は
エフェクトファイルが置かれてるフォルダと 同じ階層 に《Texture》フォルダを作成し、その中にまとめておきます。