Skip to content

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Jun 06:18
· 62 commits to main since this release

v1.2.0 - Lua スクリプト for YMM4

他オブジェクトの情報を任意のフレーム時点で取得できるようにしたリリースです。
発射元が動いても弾の発射位置を固定するなど、フレームを指定した参照が可能になりました。


新機能

1. obj.getobject へのフレーム指定引数の追加

obj.getobject(tag, frame) の第2引数 frame を追加しました。指定したタイムライン
フレーム時点での対象オブジェクトの座標・回転・拡大率・不透明度を取得できます。
frame を省略した場合は従来どおり現在フレームの値を返します。

弾の発射フレーム(弾アイテムの開始フレーム)は timelineframe - frame で求まるため、
そのフレームの発射元座標を取得すれば、発射元が動いても弾の原点を発射位置に固定できます。

local fire = timelineframe - frame
local src = obj.getobject("routersys", fire)
if src then
    obj.x = src.x
    obj.y = src.y
end

取得値は対象アイテム自身の座標・回転・拡大率であり、グループ制御・カメラ制御による
変形は含みません。同じタグのアイテムが複数ある場合は、対象フレームで表示中のものを
優先して返します。


内部実装

2. 参照方式の統一(依存クエリの再評価)

他オブジェクトの値を「現在フレームで事前に算出したスナップショット」を比較する方式から、
「参照したオブジェクトを保持し、要求されたフレームで評価する」方式へ統一しました。

  • 取得対象のアイテムを保持し、任意のフレームで評価する SceneObjectResolver を追加
  • スクリプト実行中に行われた参照 (タグ, フレーム) を記録し、出力キャッシュの
    再利用判定では記録した参照を再評価して一致を確認

これにより、任意フレームの参照に対しても決定論的かつキャッシュ整合性を保った
取得が可能になります。評価はすべて描画スレッド側で行い、スクリプト実行スレッドへは
数値のみを渡します。


ドキュメント

対応する 8 言語のスクリプト説明文に frame 引数の説明と発射位置を固定する例を
追記し、サンプル集ページにも同様の例を追加しました。