導入と使い方
「Lua スクリプト」は映像エフェクトの一種です。アイテム(テキスト・画像・図形など)に対して、 他のエフェクトと同じように追加して使います。
エフェクトを追加する
- タイムライン上のアイテムを選択します。
- プロパティエリアのエフェクト欄で、フィルタ効果の追加から「Lua スクリプト」を選びます。
検索欄では
lua/script/スクリプト/アニメーション効果などのキーワードでも見つかります。 - 追加すると、スクリプト入力欄と、トラックバーやチェックボックスなどのパラメータが表示されます。
スクリプトエディタ
スクリプト欄はコードエディタになっており、次の機能があります。
- シンタックスハイライト: Lua の構文に色が付きます。
- 入力補完: 識別子を入力すると候補が表示されます。
obj.やanim.のように ドットを入力すると、そのテーブルのメンバーだけが候補に出ます。スクリプト内で定義した関数も補完されます。 - 折りたたみ:
function ... endなどのブロックを折りたためます。 - エラー表示: 構文エラー・実行時エラー・タイムアウトが起きると、該当行に赤い波線で警告が表示されます。
実行のしくみ
スクリプトは表示中の各フレームで 1 回ずつ実行されます。
プラグインは実行前に obj・scene・ymm4 などへ現在の値を流し込み、
スクリプトの実行後に obj の値を読み戻して描画へ反映します。
グローバル変数(自分で
x = 1 のように作った変数)の状態はフレームをまたいで保持されません。
毎フレーム、組み込み以外のグローバルはリセットされます。前のフレームの値を覚えておくことはできません。
時間に応じた変化は time や obj.t から計算してください。
はじめてのスクリプト
既定のフェードインを、少しずつ拡張してみます。
1. 不透明度を変える
obj.alpha = math.min(time * 255, 255)
2. 横に動かす
obj.alpha = math.min(time * 255, 255)
obj.x = obj.x + math.sin(time * anim.tau) * 100
3. トラックバーで振幅を変える
パラメータパネルの Track0 スライダーの値が obj.track0 として読めます。
スライダーを動かすと、揺れの大きさが変わります。
obj.alpha = math.min(time * 255, 255)
obj.x = obj.x + math.sin(time * anim.tau) * obj.track0
パラメータパネル
既定では Track0 ~ Track3 の 4 本のトラックバーが表示されます。
チェックボックス(Check0 ~ Check3)と色(Color)は、
スクリプトでそれらを使うか、指定子で宣言したときに表示されます。
表示条件と既定値・名前・範囲の指定方法は パラメータ指定子 を参照してください。
| UI | スクリプトでの読み取り | 型 |
|---|---|---|
| Track0 ~ Track3 | obj.track0 ~ obj.track3 | 数値 |
| Check0 ~ Check3 | obj.check0 ~ obj.check3 | 真偽値 |
| Color | color | 数値 (0xRRGGBB) |
スクリプトの実行には 5 秒のタイムアウトがあります。無限ループや非常に重い処理は中断されます。
詳しくは 制限事項とトラブル を参照してください。