RedCrab/クロ 2022/07/02 20:05

ゲーム制作、苦戦中。

こんばんは。クロです。

■やってた事。結果から。
 Unity側
  1、アセットから画像を取得。
  2、レイヤー事に分けて出力できるように考える。
  3、キーフレームを読み込む
 Spine側
  1、ボーンのミラーがないので左右反転できるようになった。

連番出力した後、並びはどうなってるかチェックしました。
画像サイズの4の倍数サイズと2のべき乗サイズで圧縮が変わるかテストしてました。

■1、アセットから画像を取得。
まずは画像を取得しようと思ってAssetDataBase.LoadAllAssetsAtPathで一枚画像をスライスした連番画像を取得していました。Objectなので変換してSpriteにしようとしたら『コンバートは無理だよ。』って感じでエラーが出て悩んでました。

そこで一個づつ調べてると、どうやら配列の中にTexture2DとSpriteが混ざってるようです。サンプル画像を何個か作ってやってたんですが困った事にTexture2Dの配列順が固定ではないようです。Test[0]にある時もあればTest[1]の中にあったりしました。画像分けしたデータにTexture2Dはいらないので仕分けするプログラムを作りました。

↓画像は上記の内容からTexture2Dを無くして抽出した物となります。最初の8は一枚画像を連番にした画像枚数です。同じ名前が二回並んでると思います。実は一回目の名前はObjectで二回目は変換した後のSpriteになります。型を見る為にDebugで出力したら全く同じになって困惑しました。変換しないでSpriteに入れてもいけるのではと思って変換しないで一回目を、そのまま入れるとエラーになりました。一番下にあるのは読み込んだ最後の画像をチェックする為にSpriteRendererにセットした状態です。最初の状態は一番目の画像をセットしてました。


■2、レイヤー事に分けて出力できるように考える。
画像にはブラジャーとか服とか複数枚あるので配列をそれに合わせる必要が出て来ました。これはJsonから名前の異なるデータを記録して何枚フレームを使うか記憶しないといけないです。例えばオークの鼻息は4フレーム目から出てきて8フレームで消えます。

キーを配置する為にAnimationClipを読み込んで練習を開始しました。AnimationCilpのキー配置はEditorCurveBindingの中に入っています
GetAnimatableBindingsの説明が『特定のゲームオブジェクトが持っているすべてのアニメーション可能なバインディングを返します。』
GetObjectReferenceCurveの説明が『binding 変数に結びついている Object Reference Curve を返します。』と書いていました。

最初に使ったのがGetAnimatableBindingsで普通に格納できました。Nullにならないです。けど何度やっても最後が上手くいかないのでネットで調べると後者のGetObjectReferenceCurveが正解だったようです。

↓画像は途中で判った事。よく見て頂くと判りますがhobGoblinAttack1_7が最初にきています。配列0番目です。これはLoadAllAssetsAtPathで画像を読み込んだ状態でSpriteRendererにセットしたら、こうなっていました。何時もこうなるとは限らないのでSortで対処する事になりました。Sortすると後ろの数字はちゃんと並ぶのですが問題なのはbra(ブラ)やshoes(靴)の名前がアルファベット順にならんでしまう事です。あと名前の後ろに数字が付くAttack1の場合はAttack1_0とつけるようです。ない時はAttack0となるようです。結構厄介です。

■3、キーフレームを読み込む
Assetsの中のAnimationClipを読み込んで中のキー配列と秒数やスプライトを読み込む練習をしてました。読み込む事で、どうなってるかを把握していってます。

現在、分ってる課題。Prefabにした後に追加しないといけない時。具体例:Hシーンの追加や間違いデータ修正。連番画像作成でAnimationClipを作成する時にオブジェクトではなくアセットのPrefabにアクセスしないといけない事。関数が又、必要となります。

↓気が付いた画像です。。複数連番にした時にSprite252_0~Sprite252_3まで作りました。後から最初の名前と番号をZsprite252_1、次のは番号ををSprite252_0にしたら、どうなるかを試したました。自動でソートされました。作成順に並んでいると思っていました。違うようです。レイヤー名(bra,shoes,body)でスクリプトから連番画像名を出力します。レイヤーの重なり順チェックの為、生成順でいきたかったです。


Spine側
ちょっと苦戦した所。ボーンにミラーがないので真正面で作っても左右反転ができないです。当たり前なのですがScaleXに-1やScaleYに-1をいれると↓画像になります。

↓画像は反転の失敗画像です。反転画像は親元を反転させると反転できます。この時にコピーするのですが子ボーンをコピーしないと、この画像と同じようになります。例えば長い髪の毛に子ボーンが5つ付いてたら全部コピーしてからでないと使えません。結果を聞くと楽勝なんですがネットで調べても反転の仕方を書いてくれてる所はありませんでした。自力でやると結構、悩みました。良く考えると3Dモデルでは何時もミラーを使っていました。

↓Gif画像はSpineで6フレーム事にキーを打って6フレーム事に出力しても本当にあっているか試していました。これはエフェクトや連番画像で対応する所があるからです。


1秒間のフレーム数も悩んでる所です。小さい画像は大丈夫なんですが大きい画像になると容量が大変なので1秒間何フレームにするか悩んでます。増やせば滑らかだけど容量が爆増するので試行錯誤中です。

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

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

最新の記事

月別アーカイブ

記事を検索