RedCrab/クロ 2023/03/06 21:05

ゲーム製作。プログラムで難航中。

ブログを読んでくれる方サンクスです。イイネ押してくる方ありがとうです。サークル様の場合はブログを読みに行きますしイイネ押しにいきます。

現在スクリプトで苦戦しており作業が難航しております。

■今回の作業結果
1:AsepriteでSliceをスクリプト自動化開始
2:画像の位置と画像サイズを取得。
3:範囲選択でレイヤー名取得。
4:複数選択で選択したレイヤー数を取得
5:単一LayerでSliceを一個生成に成功。
7:Slice生成時に位置とサイズも調整成功。
8:Frame事の画像の縦横サイズを取得成功。
9:実データで計測。
10:結果失敗
11:その後、他スクリプトからの連携


AsepriteでSliceを自動で作成できるようにする為にLuaを少しづつ時間を作って勉強してました。手動でやるとSliceの順番が変えれないので途中でレイヤー変更しただけで作り直しで時間が掛かるので仕方なく作成する事にしました。

↓画像はAsepriteの中にスクリプトを組み込んで出力したログです。


Asepriteは左上を起点として座標を計算してるようです。この画像の場合は左上からx16y16の位置に画像があって幅48、縦48であるという事を出力しています。これはSliceで切る時の位置と画像の大きさとして使います。

↓画像はSlice機能の必要性の説明です。


左側は通常のトリムです。Layer全体で位置を合わせてトリムされています。右側は位置を合わせないで透過部分を削ったトリムです。この方法を使うにはPivotが必須です。AsepriteのSlice機能でPivotを生成してます。これで作れると容量削減ができます。

瞳と口を別けて出力できると目パチや口パクを確立で差し替えて違った表情にする事が軽い容量で出来ます。応用すると腕を分けておけば腕も他の動きに変えれます。

↓画像はレイヤー名を取得してます。


最初は選択してるレイヤー名しか取得できなくなて全レイヤーを取得したいのでAserpiteのリファレンスAPIで探したら範囲選択で取得する方法になりました。これでSlice名とレイヤー名を同じにして使えるのでUnityに持っていった時に照合できるようになります。

↓画像は複数選択でレイヤー数を取得しています。


わざと複数選択の途中で選ばないレイヤーも入れて検証しています。配列数を取得するのに変数の前に#を入れるようです。

↓画像はFrame事に画像の横縦幅を取得しています。


Wは横幅です。Hは縦幅です。背景の1マスは16pxです。

↓画像は実データで計測してます。


レイヤーが黄色い選択範囲で囲われてる部分のデータを取得して画像数をカウントしています。その際、非表示はカウントしないようにしています。表示レイヤー8個×Frame7個で56個となります。

■結果失敗
スライスも作れるし範囲も取得できるのですがFrame2以降のスライス範囲を取得する手段がないようです。Asepriteのコミュニティで調べると同じ事で質問してる方がいて回答がFrame2以降のスライス範囲は取得できないと言っておりました。Asepriteから出力できるJsonファイルを見ればデータ自体はあります。その内、関数が実装されると思います。

■他スクリプトと連携。
↓動画はSliceを検索するものです。

検索覧から文字をスクリプトから自動打ち込みで確定させてプロパティを開いて閉じる物です。

↓動画はプロパティを開いてから数値を打ち込む物です。


スクリプトから自動で数値を打ち込むように作っています。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

月別アーカイブ

記事を検索