リソースツリーに登録されたスプライトはオブジェクトの外観としても利用できますが、同時にコリジョン(衝突判定)用のマスクも設定されています。ここではスプライトの設定に関して「原点」と「コリジョンマスク」に焦点を当てています。
アニメーションについて
GM:Studio はスプライトに一枚絵としての静止画だけではなくアニメーション機能を持たせることができます。
アニメーションと言っても現在は複数の実装があって、2D に関して伝統的には連続した静止画像=ラスタ画像を一定の間隔で切り替えるとキャラクターなどが動いて見える、いわゆる「パラパラ漫画」方式が一般的にはすぐ思い浮かぶかと思われます。
CG アニメーションではこれ以外の実装もあって、特にゲームでは SWF のようにベクトル画像を用いて、これを時間軸に沿った移動量や回転・変形で動かして見せるものもあります。
GM:Studio はまだ限定的ながら SWF のようなベクトル画像の読み込みにも対応しています。
さらに進化した現在、ゲームではボーンアニメーションが利用されるケースが増えてきています。3D のゲームで複雑なモーションは IK(インバースキネマティック) のような CG アニメーション用のリギング機能を当たり前に使っていますが、2D にも IK を利用した仕組みはあり、その代表的なソフトが Spine で、GM:Studio は Spine 形式のボーンアニメーションに標準機能で対応しました。
Origin(原点)について
静止画像だけを扱う場合は、画像の枚数があまり多くならない前提であれば Sprites の Origin 設定についてはあまり注意する必要が無いので楽なのですが、アニメーションさせる前提だと Sprite Origin の XY 位置については統一した仕様で対応したほうが良い。
アニメーションさせる場合 Origin は Center が良い
ロードするスプライトの種類によっては最初から原点が中央(center)で固定されて変更できないものもあります。
Spine 形式は原点がデフォルトで中央に設定されています。原点を中央に定めることで Flip (フリップ、もしくはミラー、いわゆる左右反転)処理に都合の良い状況が作れます。
原点が中央以外の場合、このスプライトを左右反転するとコリジョン(衝突判定)用の Bounding Box 位置も左右反転に追従するため、衝突判定処理にひと手間生じてしまう可能性があります。
参考動作:Sprite を左右反転して Bounding Box を表示するテスト
具体的には Origin X/Y
が 0,0
だった場合、原点はスプライトの左上にあるということなのですが、このスプライトの横サイズが 100 ピクセルだった場合、フリップによって原点の位置は変わらないけれど Bounding Box も反転するためフリップする前は衝突判定が無かったのに、フリップしたらいきなり衝突が…というより壁にめり込む状態が生じてしまいます。
Draw イベントをカスタムすれば対応できるけど
ひと手間かけるよりも、最初からアニメーション用はスプライトの原点を中央にして、その前提でゲーム仕様を作った方が混乱が少ない。左右反転を簡単に実装するためには原点が中央にあったほうが楽。
- 買った直後・スタートアップ画面とライセンス認証など
- ライセンス認証後、環境にまつわる設定を変更
- コードエディタの設定、予測変換の反応速度など
- プロジェクトの新規作成、文字と画像を表示してみる