エフェクトにロジックを追加する
このページは映像エフェクトプラグイン作成入門 の一部です。
/icons/-.icon
前回、エフェクトをビルドしてYMM4上で使用しました。
しかし現状の実装では何も起こらなかったはずです。
今回はエフェクトに描画位置の変更などのロジックを追加します。
描画位置の変更
SimpleEffectProcessorクラスを編集していきます。
描画位置などの変更はUpdateメソッドから行います。
SimpleEffectProcessorクラスのUpdateメソッドを以下のように書き換えてください。
code:cs
public DrawDescription Update(EffectDescription effectDescription)
{
var x = 500;
return effectDescription.DrawDescription with
{
Draw = new(
effectDescription.DrawDescription.Draw.X + x,
effectDescription.DrawDescription.Draw.Y,
effectDescription.DrawDescription.Draw.Z)
};
}
このコードではxという変数を宣言して、描画位置のX座標に加算しています。
これをビルドしてアイテムにエフェクトを付与するとアイテムが右に500 px動くことが確認できます。
絶対的な指定
先ほどのコードをこう書くとどうなるでしょうか。
ビルドして違いを確認してください。
code:cs
public DrawDescription Update(EffectDescription effectDescription)
{
var x = 500;
return effectDescription.DrawDescription with
{
Draw = new(
x,
0,
0)
};
}
一見違いは分からないかもしれません。
しかしエフェクトを付けたアイテムをプレビュー上でドラッグして移動させると違いがはっきり分かります。
以前のコードではアイテムが右にずれるだけでしたが、このコードではアイテムが(500, 0, 0)にがっちり固定されます。
動きを付ける
単に描画位置がずれるだけでは単調すぎるので動きを付けてみましょう。
Updateメソッドを以下のように書き換えてください。
code:cs
public DrawDescription Update(EffectDescription effectDescription)
{
var frame = effectDescription.ItemPosition.Frame;
return effectDescription.DrawDescription with
{
Draw = new(
effectDescription.DrawDescription.Draw.X + frame,
effectDescription.DrawDescription.Draw.Y,
effectDescription.DrawDescription.Draw.Z)
};
}
上のコードでeffectDescription.ItemPosition.Frameはアイテムの先頭から数えた現在の再生位置のことです。
その値をframeに代入してframeをX座標に加算しています。
ビルドしてエフェクトを付与して動きがあるか確認してください。
時間とともにアイテムが右に動くエフェクトができたはずです。
/icons/-.icon