【GDevelop】意外とややこしいスプライトの反転

GDevelop はゲームエンジンとしては珍しく、今のところ(v5.0.0-beta103)エディター上でスプライトを反転させることができません😢

反転させるにはイベントで、スプライトに反転エフェクトをかける必要があります。

このアクションです↓

水平方向、または垂直方向に反転させることができます。
もちろん水平反転させてから垂直反転する、といったことも可能です。

なお、他のゲームエンジンでは、サイズやスケールの値をマイナスにすることで反転させることができたりしますが、GDevelop ではそれらの値をマイナスに設定することはできません。(0 になります。つまり見えなくなります💦)

⚠ エディター上で無理やりマイナス値にすると、一見それっぽくなりますが、実行時には 0 になり見えなくなります。

反転時の当たり判定とポイントについて

スプライトには当たり判定やポイントを設定できます。
それらはスプライトが反転されると以下のように変わります。

まず当たり判定は、デフォルトの衝突マスクでも、カスタム衝突マスクでも、スプライトに合わせて反転してくれます。
これは多くの場合、期待通りに機能してくれるでしょう。

次にポイントについてですが、こちらは少々ややこしいです。
そもそもポイントには最初から「Origin」と「Center」が設定されています。

Origin は原点を指していて、スプライトの位置(X と Y の値)で使用されるポイントです。
Center は中心を指していて、スプライトの回転や反転するときの基準となるポイントです。
この2つのポイントは、反転しても反転しません(分かりにくいw)
しかし、独自に追加したポイントは反転します😵

具体的に例を見てみましょう。

スプライトには、このようにポイントが設定されていた場合↓

分かりにくいけど赤丸のところに追加した「Point」というポイントがあります。

そのスプライトを反転させると、それぞれのポイント位置は、このようになります↓

赤い+は Origin、黄色い+は Center、水色+は Point

スプライトが反転しても、Origin は反転していません。
そのためスプライトの位置(X と Y)も反転前と変わりません。

Center はそもそも反転の基準となっているため、同じ位置のままです。

そして独自に追加した Point はスプライトに合わせて反転しています。
そのため見た目上の同じ位置(この例では銃口)を指しています。

少しややこしい動作ですが、このような動作のおかげで、反転を考慮せずにイベントを組めるようになっています。

反転を利用する際は、以上のような点に気を付けてください。

コメント

このブログの人気の投稿

【GDevelop】セーブデータは暗号化しよう!

GDevelop の「イベント」を正しく理解しよう

GDevelop 5.3 がリリース!なので、ここ最近(2023年1月~2023年11月)の GDevelop バージョンアップまとめ