最近、歩くアニメーションの画像を作りたいなと思っていくつかアップロードしました。
これまでは手でポチポチ押しながら画像を移動させていましたが、
せっかくスクリプトが導入できるソフトなので、どうにか効率化できないかな・・・と思い
スクリプトを組んでみました。
スクリプト保管先(GitHub)
github.com
1.使い方
▲例えばこんな感じの画像があったとして、背景レイヤーを指定ピクセル分徐々に移動したいとします。
3.反映したいフレーム数を指定
▲次に反映したいフレーム数を指定します。 例えばここで10と選択すると、1フレームごとに3ピクセル移動し、
最終的には10フレーム後に30ピクセル移動することになります。
4.移動方向を指定
▲画像を移動させたい方向を指定します。 ダイアログで案内されている文字列をそのまま入力してください。
(うまい方法が思いつかなくてすみません・・・)
▲成功すると右側方向のフレームに反映されます。
2.ちょっとだけ解説。
以下の順番で実行しています。
1.先頭のセルをコピー
2.空のセルを生成
3.選択セルを2で生成したセルに移動
4.貼り付け(単純にコピペの操作です)
5.セル全体を矩形選択
6.指定セル*ループ数分移動
(1フレーム目なら3*1=3ピクセル、2フレーム目なら3*2=6ピクセル...)
app.command.Copy() spr:newCel(app.activeLayer, app.activeSprite.frames[firstFrameCount+i]) app.activeCel = app.activeLayer:cel(firstFrameCount+i) app.command.Paste()
▲1~4の操作。ちなみにCopyCelなる動作もあるみたいですが、うまくいきませんでした。
多分セル選択したときにAlt+Dするとできる操作だと思うんだけど、引数がよくわからなくて・・・
-- 選択範囲移動(共通) app.command.MoveMask{ target='content', direction=directiondata.direction, units='pixel', quantity=(addquantity.addcount*i), wrap=false }
▲5~6の操作。 MoveMaskというのが6の操作です。
同じMoveMaskという記述をもう1個追加して違うdirectionを指定すれば斜め移動もできます。
(directionがleftのものとupのものを追加すれば左上に徐々に移動します。)
これで大分楽になった印象です。
風の表現とかがうまくいくといいな~と思います。
https://github.com/aseprite/api/blob/master/api/app_command.md#appcommand
ちなみに最近知ったのですが、Asepriteで引数が見つからないとき(app.commandのもののみ?)はhttps://github.com/aseprite/aseprite/blob/master/data/gui.xml
でメソッド名を検索して引数を確認するか、AsepriteのC++のソースコードでメソッド名検索して頂戴とのこと。
それでうまくいったケースはいくつかあったのですが、app.command.CopyCelは引数がなく、どう使ったらいいのやら・・・
といった感じで悩んでおります。 どうしようかな。 なんかそれでうまくいきそうだったらまた更新します。