投稿

9月, 2025の投稿を表示しています

aceprite)色変換のスクリプトをwindowsバッチで起動する

 前回、色変換をスクリプトで実行する方法を紹介しました。 ただ、あの方法だと、変換したいファイルを開き、スクリプトを実行、また次のファイルを開いて実行・・・、と、まだ手作業が多い状況でした。 そこで、windowsのバッチファイルからスクリプトを実行することで、以下のような処理をできるようにしてみます。 ①色変換したいacepriteファイルの入ったフォルダを指定 ②フォルダ内の全ファイルについて色変換を実行 以下バッチとスクリプトの内容です。 ■バッチファイルの内容 @echo off echo *** フォルダをドロップして下さい。*** set /p dir="" echo %dir% cd %dir% rem --以下スクリプトパス。使用したいスクリプトのパスを指定すること--------- set script_file="C:\Users\userA\Desktop\desktop\tool\aseprite\Aseprite-v1.3.14.4-x64-Portable\Aseprite-v1.3.14.4-x64\scripts\replace_color_test.lua" rem --選んだフォルダ内のasepriteファイルに対し、スクリプトを実行----------- setlocal enabledelayedexpansion for %%f in (*.aseprite) do ( set fname=%%f set fpath=%dir%\!fname! echo !fpath! C:\Users\userA\Desktop\desktop\tool\aseprite\Aseprite-v1.3.14.4-x64-Portable\Aseprite-v1.3.14.4-x64\Aseprite.exe -b --script-param param_fpath=!fpath! --script %script_file% ) echo 完了しました。 pause exit ■luaスクリプト --バッチからファイルのフルパスを取得 local param_fpath = app.params["param_fpath"] --aceprit...

aceprite)スクリプトで色を変換する

イメージ
  godotではありませんが、ゲームで使用するアニメーション用のドット絵を、acepriteというソフトで作っています。  元々、フルカラーで絵を作っていました。しかし、『都市伝説解体センター』、というゲームで、色を青と赤のみに絞り、その濃淡のみでドット絵を作って作っていたのに感銘を受け(美しく、かつ、色を決める手間がだいぶ省けます)、途中から青と黄色で作るようになりました。  しかし、途中まで作っていたフルカラーの絵の素材は膨大で、その一つ一つのacepriteのファイルについて、一個ずつ色を指定、変換していくのは、かなり大変です。 (同じ敵でも、方向やアクションごとにファイルを作っているため、同じ色変換でも、色を選択する作業が大変です) そこで、スクリプトで色の変換内容を事前に指定、実行できないか、試してみました。 スクリプトはluaというスクリプト言語で書く必要があります。ただ、何か特別な物をインストールする必要は無く、テキストファイルに書いたソースの拡張子を、luaにして、所定の場所に置くだけです。以下手順です。 ■スクリプトの配置方法 https://zenn.dev/ail/scraps/99f60dd6152801 ①以下、file⇒scripts⇒open script folder、をクリック、開いたフォルダにスクリプトファイルを置きます(スクリプトについては後で述べます) ②同様に、file⇒scripts⇒rescan scripts folder、をクリック、acepriteに配置したスクリプトを認識させます。 ③スクリプト名がaceprite内で表示されることを確認 (ここでは後で述べますが、replace_color、というこちらで付けたスクリプト名が表示されます、任意の名称です。①、②の時点では表示されませんが、以下のように、③の時点になると、file⇒scripts⇒replace_color、と表示されます。) ④replace color、をクリックすると、通常であれば、edit⇒replace color、で手動で行っていた色の置換が、自動で、スクリプト内で事前に指定した色について、できます。 ■スクリプトの書き方 以下、公式の記載を参照して書きました。 https://www.aseprite.org/api/com...

aceprite) 斜め30度の線をきれいに書く方法

イメージ
 godotではなく、ゲーム中のドット絵を描くための、acepriteというツールについて、です。isometoic(アイソメトリック)の視点で絵を描いているのですが、以下のように、縦:横=1:2、の線を引くことが多いです(30度の角度です)。 これを引く際、マウスでドラッグして引くのですが、角度が連続的に変わることもあり、若干1ドット分角度がずれる、等で、調整が面倒でした。 本日見つけたのですが、shiftを押しながらドラッグすると、0° ⇒ 30°(1:2) ⇒ 45°(1:1) ⇒ 60°(2:1)・・・、と、離散的に動くので、キレイな角度のみ選択させてくれます。 これでまた作業が楽になりそうです。

aceprite)ドット絵で、斜めの線をキレイに書く(余分な幅を持たせない)方法

イメージ
 godotとは関係ありませんが、acepriteというドット絵作成用のソフトがあり、それでゲーム内のアニメーションの絵を作成しています。 これまで、斜めの線を書くと、以下のように、はみ出るドットが自動でできて、幅が増えているように見える事がありました(以下は1ピクセル幅で書いた物)。 今日見つけたのですが、上部にpixcel-perfect、というチェックボックスがあり、これにチェックを入れて同様の線を引くと・・・ 以下のように、斜めの線がその通りに、はみ出ず、キレイに書けました。 これまで手ではみ出た部分を消して修正していたので、これは便利です、先に知っておきたかった・・・

area2D,area entered)エリア判定が、collision shapeのskewの設定で広がってしまう

イメージ
(v4.4.1 stable)  area2Dに侵入した別エリアを検知する方法に、シグナル"area_entered"、を使用する方法があります。 ・検知用エリアからシグナルarea_entered、をスクリプトで受信、  エリアへの別エリアの侵入を検知 ・以下のように、検知用のエリアを、collision shape 2D(shapeはrectangle(四角形)を選択)で作成、そこにプレイヤーのareaが侵入すると、例えばダメージが発生する、等で使用 これまでは、検知用エリアのcollision shapeの設定は、rotationやposition、scaleを編集する程度でした。 しかし今回、形を平行四辺形のようにしたくなり、skew(歪み)、を変更、以下のようにしました。 ・collision shape の skew を変更、平行四辺形のような形状にする 想定としては、長方形の時同様、上記の平行四辺形(collision shapeの形)のエリアに、プレイヤーのエリアが侵入したら、侵入検知用のスクリプトが反応する、と考えていました。 しかし、なぜか以下のような位置で、エリアが重複していない場所で、侵入が検知されてしまいます。 ・skew変更による平行四辺形の場合、以下の位置で検知されてしまう ・skewを変更しない(0)長方形なら、以下のエリアが接触した位置で検知される 原因は不明なのですが、見た目と挙動が変わってしまうのは、困りますね・・・ area関連の処理が、反応しない位置で反応してしまうことがあったら、skew等、collision shapeのインスペクタの形状の設定を疑い、シンプルな初期設定に戻して、一旦テスト、原因を探るのが良いかもしれません。

Animation Player) トラックごとコピー、他アニメーションに貼り付けることができる

イメージ
 アニメーションプレイヤーについて、以前、トラック内の要素をのコピペについて紹介しました。 https://godot-biginner.blogspot.com/2025/08/animationplayer.html 今回、トラックごとコピー、他のアニメーションに貼り付けることができることを見つけましたので、紹介します。 以下のように、アニメーション内のキャラクタの向きによって、衝突エリアの範囲が異なるケースがあるとします。 ・同じキャラクターでも、下向きと横向きで衝突範囲(水色)が異なる そのため、以下のように、様々なcollision(衝突範囲)について、各方向用のアニメーション内で、値を設定しなくてはなりません。 ・大量の値の設定 アニメーションには同じ向きでも、静止用・歩行用、と複数ありまして、静止用で設定したものを、そのまま歩行用に貼り付けたいです。 以下方法で、貼り付けることができました。 これでまた、作業が少し楽になりました。 ①トラックをコピーしたいアニメーションの、右上の編集(以下黄色)をクリック ②トラックをコピー、をクリック ③コピーしたいトラックを選択、コピーボタンを押す ④貼り付けたい別のアニメーションを選択、編集をクリック ⑤トラックを選択、をクリック ⑥以下のように、トラックごと、別のアニメーションに貼り付けできた。

TileMapLayer) 各タイルの物理レイヤーの設定を修正する方法

イメージ
TileMapLayerで、物理レイヤーを以下のようにペイントで選択、衝突範囲を各タイルに設定できます。 ・タイルに衝突範囲を設定 しかし、一度設定した複雑な形状を再度編集したい時、どのようにすればいいか分かりませんでした。 右側に、以下のように設定した物理レイヤー含むタイルの一覧が表示されています。 これをクリックして選択、そのタイルの衝突範囲を編集したいです。しかし、クリックの操作内容は、『ペイントで設定した衝突範囲を選択したタイルに反映』、の意味なので、タイルに設定済の衝突範囲を読込、編集できず、ペイント内のデフォルトの範囲で上書きされてしまいます。 そのため、毎回作り直したり、または間違わないよう慎重に作成していました。 今日見つけたのですが、以下のように、選択タブ ⇒ 右側から対象タイルをクリック ⇒ 物理 ⇒ pysics layer 、を選ぶと、特定のタイルの現状の衝突範囲を読込み、修正をかけることができます。 これで、誤りを恐れず、気軽に衝突範囲の設定ができるようになりました。