幻日幻月環

作成した伺かの更新情報などをつぶやくところ

シェル内でランダム動作

この記事は伺か Advent Calendar 2015の4日目に投稿したものです。

surfaces.txtの記述で、アニメーションのランダム選択が出来ます。
それを踏まえて、ゴーストを放置していると体を揺すったり目を閉じたりするアニメーションを作ってみます。
利点は、さくらスクリプトなどを出さないため、後々の処理が楽な点が上げられます。
例えば、これをトークで作ろうと思うと、「今トーク中か?」「前から何秒たったか?」など色々な判定が必要になりますが、surfaces.txtのアニメーションはトークに干渉しないため、判定すること自体が不要になります。
シェル内で行う処理のため、shell/masterのsurfaces.txtに記述します。
言葉だけで説明するのは難しいので、スクリプト中のコメントで解説してみます。
以下はsurfaces.txt内の、surface0{}よりも下に書いてください。
ファイルの最終行に追加しておけば間違いないです。

// サーフェス0番に設定を追加
surface.append0
{
// 既にアニメーション0番にまばたきが設定されているものとする
// animation0.interval,periodic,4
// animation0.pattern0,overlay,1000,0-700,0,0
// animation0.pattern1,overlay,1001,50,0,0
// animation0.pattern2,overlay,1000,50,0,0
// animation0.pattern3,overlay,-1,50

// 60秒置きにアニメーションする
animation3000.interval,periodic,60
animation3000.pattern0,overlay,-1,55000
animation3000.pattern1,alternativestart,(3001.3002.0)

// 解説
//
// animation3000.pattern0,overlay,-1,55000の部分
//
// periodic,数字は、サーフェス切り替わりの瞬間に
// 無条件に動作してしまうので、55秒待つ
// → サーフェス0のまま変更されず55秒たっているというのは、
// トークが終了している状態と考えてもよい
// サーフェス0→0も変更に含まれる(里々はトークのたびに\s[0]が入る)
// 55秒なのは、このアニメーションが60秒ごとに再生されるため
// サーフェスに「-1」を入れると、
// このアニメーション中に重ねた画像などを消去出来る
// ここでは、何か画像を重ねる前に「-1」してるので何も起きない
//
// animation3000.pattern1,alternativestart,(3001.3002.0)の部分
//
// 55秒待ったら、
// アニメーション3001番か3002番か0番(はずれ)をランダムに1つ実行する

// 上記から呼び出されるアニメーション
// アニメーション3001番 左右に体を揺らす
animation3001.interval,never
animation3001.pattern0,move,0,100,3,0
animation3001.pattern1,move,0,100,0,0
animation3001.pattern2,move,0,100,-3,0
animation3001.pattern3,move,0,100,0,0
animation3001.pattern4,move,0,100,3,0
animation3001.pattern5,move,0,100,0,0
animation3001.pattern6,move,0,100,-3,0
animation3001.pattern7,move,0,100,0,0
animation3001.pattern8,move,-1,0

// アニメーション3002番 しばらく目を瞑る
// 1000番が半目画像、1001番が目閉じ画像とする
// 目を瞑る時間は1.5~3.0秒のランダム
// このアニメーション中、
// まばたきアニメーション(0番)は再生されない
animation3002.interval,never
animation3002.option,exclusive,(0)
animation3002.pattern0,overlay,1000,50,0,0
animation3002.pattern1,overlay,1001,50,0,0
animation3002.pattern2,overlay,1000,1500-3000,0,0
animation3002.pattern3,overlay,-1,50
}
PageTop

コメント


管理者にだけ表示を許可する