【GDevelop 基礎 07】Physics Engine で衝突する

今回作成するもの

Unity や Unreal Engine では Collision のように呼ばれることが多いですが、GDevelop でも同じことができます。

今回は Physics Engine (2.0) と、Platformer 関連の Behavior を使った方法でまずは簡単な方法を見ていきます。

Scene にキャラクターと床用タイルのスプライトを読み込む

床用タイルの読み込み

タイル状に正方形の画像を並べることができるように、以下の Tiled Sprite で読み込みます。(日本語だと タイルスプライト です)

今回は Platformer Art Buildings · Kenney のタイルを利用しています。

床用タイルの利用

読み込みが終わり、シーンにドラッグ&ドロップします。そうすると、32px 四方の小さな正方形が表示されます。

このままだとキャラクターに対しても小さいので、2倍して 64px 四方にします。

後は伸ばしたい方向の辺にカーソルを持っていけばカーソル表示が変わるので、好きな方向に伸ばします。

床用タイルは好きなように配置してください。衝突を確かめるために壁も作っておいてください。

シーン内でタイルのコンテクストメニューから Duplicate するか、Ctrl +D すれば Scene Object としては一つのままで、タイル用のオブジェクトを増やすことができます。

Physics Engine を使った衝突可能なオブジェクト

まず PlayerFloor の方を使います。

Player の Behavior

Floor の Behavior

  • Physics2
    • Player との違いは Type: Static な点です。

Platformer の Behavior を利用したオブジェクト

このシリーズでは一つ一つ手作りして動きを作っていますが、パッとゲームを作るなら今後もこちらの Platformer の動きを使った方が早いです。

こちらは PlayerPlatformerFloorPlatformer を使います。

PlayerPlatformer の Behavior

PlatformerObject はデフォルトでジャンプ等もできます。

今回の変更点はスクリーンショットの一番下の Max. speed120 にして、先程の Player の方の速度と合わせている点だけです。

FloorPlatformer の Behavior

Platform の方は何も手をいれる必要はありません。

動作確認

今回はそれぞれの入力を分けていないので、どちらも左右キーで動作します。壁にはぶつかって停止し、床から落ちると角度を変えずに落ちていくのが確認できると思います。

角度を変えずに落ちるのは Fixed Rotation の影響です。

PlayerPlatformer は方向を変えた時に画像が反転していませんが、こちらに関しては今回は触れません。