Sprite Engine

SpriteEngineコンポーネントは、スプライトの作成と保存を非常に簡単に行うことができます。
Sprite Engineは、さまざまなシステムで作業する手間を省き、Spriteを作成するパワーを一か所に集中させます。
キャラクターのアニメーション状態を制御するロジックも処理するので、コードを書く必要はありません。
このシステムは、スプライト・アニメーションのワンストップ・ソリューションを目指しています。

まずは、SpriteEngineコンポーネントをgameobjectに追加してください。SpriteRendererが自動的に追加されます。
すると、このようになります。

Property
Play Buttonsインスペクタまたはシーンでスプライトを再生します。
緑の再生ボタンがインスペクタ内での再生。
青い再生ボタンがシーン内での再生。
赤い停止ボタンはアニメーションの再生を停止します。
Display Windowスプライトを表示します。
マウスホイールでズームします。
右クリックでウィンドウをリセットできます。
左上のカラーチップ(□)をクリックすると背景色を変更できます。
New Spriteスプライトの作成、名前付け、削除。(アニメーションも管理します)
スプライトを変更するにはドロップダウンメニューを使います。
デフォルトでは、New Spriteというスプライトが1つ作成されます。
スプライト(アニメーション)毎に名前を変更するといいでしょう。
アニメーションは複数のスプライトからのパラパラアニメーションです。
Drop Sprites Here新しいスプライトが作成されたら、ここにスプライトをドロップします。
複数のスプライトをまとめてドロップするとアニメーションになります。
このエリアをクリックすると、インスペクタがロックされます。
Wrench IconTransformやCollider2Dのように、変更するプロパティを各スプライトに追加します。
Options Iconアニメーションの追加オプション。
Drop Icon現在のスプライトをすべて置き換える。
Sprite Swap IconSet thSprite Swapスクリプト可能オブジェクトの参照を設定します。
Signalsシグナルはアニメーションの状態を制御するために使用される。
Sprite Stateアニメーションのステートマシンを作成する。
PropertyExtra animation Options.
Synchronizeこれは2つのアニメーションを同期させることができます。
例えば、停止状態(idle)の攻撃(shoot)アニメーションがあり、その後プレイヤーが走り出すと、走行時の攻撃(shoot)アニメーションを同期させて攻撃(shoot)アニメーションを完成させます。
これを使うには、両方のアニメーションが同じ Sync ID int 値を持っていることを確認し有効にします。
Sync IDは0であってはいけません。
Loop Onceアニメーションを1回だけループする。
Loop Start Indexスプライトが一度再生された後に再生を開始するインデックスを指定します。
(2回目以降のループの開始位置)
Loop Once Eventloop onceが有効な場合、アニメーションがループを完了すると、このUnityイベントが呼び出されます。

スプライトが作成されると、スプライト・メニューが表示されます。ここでスプライトを並べ替えたり、追加したり、削除したりします。
また、グローバル・スピード・スライダーを調整することで、再生速度をテストすることができます。
これですべてのスプライトのスピードが即座に設定されます。
また、スプライトごとに再生速度を設定することもできます。

Sprite Swap

さまざまなプレーヤーのスキンを作成するには、右クリックしてCreate/FlareEngine/SpriteSwapを選択し、Sprite Swapスクリプト可能オブジェクトを使用します。
オブジェクトを開き、必要なスキンを追加します。
各スキンには、アイドル、ランなどのアニメーションを追加する必要があります。
これらのアニメーション名は、Sprite Engineのデフォルトアニメーションを含め、すべてのスキンで一致していることを確認してください。
また、各アニメーションのフレーム数は同じでなければなりません。

Sprite Engineへの参照として、Sprite Swapを追加する必要があります。
実行中に新しいスキンに切り替えるには、Sprite Swapスクリプト可能オブジェクト(またはSprite Engine)のSwapメソッドを呼び出し、切り替えたいスキン名を指定します。

詳しくは、SpriteSwappingのデモシーンで、スキンを切り替えるためのSprite Swapの設定方法をご覧ください。

State

ステートマシンは、シグナルを読み込んで適切なアニメーションを設定することで、キャラクターのアニメーション状態を構成します。
(シグナルというのはSprite Enginオブジェクトの状態を表す文字列。Signalsで使用するシグナルを指定します。自分でオリジナルのシグナルを設定することも可能。)

すべてのシグナルとスプライトを作成したら、追加ボタンをクリックしてステート(状態)を作成します。
アニメーションステート(オレンジ色で表示)には、使用可能なすべてのシグナルのリストが表示されます。
シグナルを選択したら、そのシグナルがtrueになったときに再生されるアニメーション(緑色)を選択します。

ステートは、上から下へ優先順位をつけて並べなければならない。
システムは最初に成功したシグナルを見つけるまで実行し、その後終了する。

各ステートは、関連する信号のグループがある場合サブ状態を持つこともできる。
サブ状態は最大4レベルまで入れ子にすることができる。

下の例は、2つの状態を持つステートマシンを示している。
ジャンプ状態には2つのサブ状態がある。
ジャンプ信号が真になると、システムは信号velYUpをチェックする。velYUpが真の場合、システムはJumpingUpスプライトを再生する。
代わりにVelYDownが真なら、システムはJumpingDownスプライトを再生します。

また、スプライトをXまたはY方向に反転させる青いステートもあります。
一番上のシグナルはalwaysTrueに設定されているので、システムは常にこの状態をチェックします。
最もよくチェックされるシグナルはvelXLeftとvelXRightである。もしx方向の速度がどちらかを向いていれば、システムはその方向にスプライトを反転させる。
(左右の振り向きに利用されます。この場合左右反転したスプライトを別に用意する必要はなく自動で反転表示されます。)

Important
スプライトの左右反転を正しく動作させるには、すべてのスプライトを右向きに作成する必要があります。

Transition

アニメーションは、1つのアニメーションから別のアニメーションに移行することができ、状態間のスムーズな移動を可能にします。
たとえば、アイドル・アニメーションからしゃがみアニメーションに移行するとき、”crouching down”アニメーションを使用することで、シームレスな移行を実現できます。

この例の続きとして、しゃがみアニメーションのトランジションを作成します。
アイドル状態からしゃがみ状態に遷移させたいので、コンディションをonGroundシグナルに設定します。
From animationは開始アニメーションで、アイドル状態。
To animationはトランジションアニメーションで、しゃがむアニメーションにします。

トランジションアニメーションはすべてスプライトエンジン内に存在し、ステートマシンではなくトランジションセクションにのみ属していることに注意してください。

Properties

これにより、すべてのスプライトに、フレームごとに変更できるプロパティが追加されます。
時には、アニメーションとシームレスに連動させるために、TransformやCollider2Dをコントロールする必要があります。
よくある設定は、攻撃アニメーションと連動させるために、Collider2Dを変更し、そのコリジョンエリアのサイズを変更することです。
(剣を振った際に当たり判定を変化させる等)

レンチのアイコンをクリックして、作業するプロパティのタイプを選択します。
選択すると、スプライトメニューにプロパティが表示されます。
リファレンスを設定し、開いて変更を開始します。

Tip
プロパティを操作しているとき、そのプロパティに加えられた変更をシーンで見ることができます。

上の例では、剣で攻撃するアニメーションを描いています。
2フレーム目では、BoxCollider2D のオフセットとサイズが特定の値に設定されているのがわかります。
3フレーム目が選択されている場合、これらの設定値はアニメーションに必要なものによって、同じでも異なってもかまいません。
緑色のプラスボタンをクリックして、プロパティを有効にする必要があります。
また、interpolate 有効にすることで、これらのプロパティをフレームごとに補間することもできます。有効にすると、各プラスボタンの隣にIボタンが表示されます。
これをクリックすると、指定されたプロパティの補間が有効になります。

Tip
攻撃アニメーションのループは一度だけというのが一般的です。OnLoopOnceイベントは通常、アニメーションが完了したことをシステムに知らせるために、何らかのメソッドを呼び出します。

タイトルとURLをコピーしました