nekodorif - specifications - katochan - animation


猫どりふ 落下物のアニメーション仕様書

概要

:::猫どりふ落下物は、伺かのSERIKO/1.2をベースとしたアニメーション表現機能を備えます。
アニメーションパターン定義ファイルを記述することにより、落下物の全身アニメーションを行ったり、落下物を複雑な経路で落下させることが可能となります。

:::本仕様書は 伺かのSERIKO/1.2仕様を理解の上でご利用ください。
 伺かの関連仕様書 SERIKO/1.2

:::猫どりふのアニメーション機能は、伺かのSERIKO/1.2をベースとして機能追加/削減したものです。 伺かのSERIKO/1.2とは挙動が異なることがあります。



基本構造

:::落下物のディレクトリにアニメーションパターン定義ファイルsurface[0/1/2]a.txtを置くことにより、 指定したサーフェスがアニメーションするようになります。

home
 +-katochan
  +-sakura
   +-surface0.png
   +-surface0a.txt

:::surface[0/1/2]a@ゴースト名.txtを作成すると、指定したゴーストでは当該アニメーション定義としてそのファイルが使用されます。
例えば surface1a@まゆら.txt を作成すると、まゆらに落ちる落下物ではこの定義ファイルが使用され、 他のゴーストではデフォルトのsurface1a.txtが利用されるようになります。



surface[0/1/2]a.txt

:::記述フォーマットについては 伺かのsurface[id]a.txtに準じますのでそちらを参照ください。
以下では 伺かとの差分について解説します。


■アニメーショングループ数
1つのベースサーフィスが持てるアニメーショングループの数は最大で 4 です(3interval〜まで)。

■intervalエントリ
always/runonce/sometimes/rarelyをサポートします。neverは全く発動しません。

■アニメーションメソッド
overlayメソッドはサポートしません。
また、猫どりふ独自のメソッドが定義されています。

 伺か互換メソッド  base、move
 猫どりふ独自メソッド  step、base+move、base+step

step
全体の移動です。offsetx,offsetyには、x,yそれぞれの方向への移動量を記述します。
元位置を基準としたオフセット値への移動であるmoveと異なり、stepでは元位置そのものにx,yが加算されます。

0pattern0,0,20,move,1,0
0pattern1,0,20,move,1,0
0pattern2,0,20,move,1,0
0pattern3,0,20,move,1,0

上のように書くと落下物は右に1dotずれた位置で静止しますが、

0pattern0,0,20,step,1,0
0pattern1,0,20,step,1,0
0pattern2,0,20,step,1,0
0pattern3,0,20,step,1,0

stepで書くと落下物は右に移動していきます。

surfaceidパラメータは無視されます。

base+move
baseとmoveを同時に行います。surfaceidパラメータ、offsetx/yパラメータはともに有効です。

base+step
baseとstepを同時に行います。surfaceidパラメータ、offsetx/yパラメータはともに有効です。

■無効なサーフィスID
baseにおいて無効なサーフィスIDが指定された場合、伺かではsurface0へリダイレクトされますが、猫どりふ落下物では 前の状態が保持されます(サーフィス切り替えが発生しない)。

■サーフィス枚数
ひとつの落下物で使用できるサーフィスの枚数は64枚までです。

■@ゴースト付きサーフィスの扱い
surface[id]@ゴースト.bmp/pngも自動的に正しく処理します。surface[id]a.txt内で@ゴーストを付けて指定する必要はありません。 というより、付けると正常に読めませんのでつけないで下さい。
例 surface2@双葉.pngが存在すれば、単に

0pattern0,2,100,move,0,10

と書けばゴーストが双葉時にちゃんと読みます。

■排他アニメーション
runonce動作中は他のアニメーショングループ(always/sometimes/rarely)は発動しません。



注意

:::katochan.txtのfall.typeやslide.typeエントリで指定された挙動とSERIKOアニメは並列に動作します。
stepを利用して落下時の動作をプログラムしたい場合は、fall.typeとslide.typeをともにnoneとしておくのが基本です。