Godot4 マップチップの一部に衝突判定させる範囲を設定&テスト

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、タイルマップに配置した障害物となるマップチップ(タイル)に当たり判定の領域を設定して、操作するキャラクターのノードが障害物のタイルを通過できなくする手順を紹介します。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。

前回の記事

以下の記事でキャラクターを移動できるようにしましたが、海のタイル(マップチップ)の部分も移動できてしまいます。

タイルセットに物理レイヤーを追加

ファイルシステムドックで、タイルセットリソース (.tres) を選択して、インスペクタードックの「Physics Layers」セクションの「要素を追加」ボタンを押します。

Godot4 障害物にするタイルセットリソースに物理レイヤーを追加します.

物理レイヤーが追加されました。

これにより、Area2D や CharacterBody2D などの衝突判定を行うクラスと同様の Collision Layer と Collision Mask を設定する項目が加わりました。
Collision Layer は自身が所属するレイヤーで、 Collsiion Mask は自身と当たり判定をする対象のレイヤーです。

Godot4 障害物にするタイルセットリソースに物理レイヤーでCollisionLayerとMaskを設定します.

タイルごとの物理レイヤーの設定

タイルセットに物理レイヤーを追加したら、物理レイヤーを設定するタイルを選択します。

ファイルシステムドックでタイルセットリソース (.tres) を選択した状態で、下パネル TileSet の左上の「タイル」タブを開いて、物理レイヤーを設定するタイルを選択します。

Godot4 障害物にするタイルセットリソースのタイルを選択してペイントタブに切り替えます.

対象のタイルを選択した状態で、下パネル TileSet の上側の「ペイント」タブを開いて「プロパティエディターを選択」をクリックして、表示された「物理」セクションで、先ほどタイルセットに追加した物理レイヤー(名称は「物理レイヤー0」)を選択します。

Godot4 障害物にするタイルの物理レイヤーの設定1.

「物理レイヤー0」を選択すると、当たり判定の領域を設定するためのマスが表示されます。

その右側のタイル画像群から当たり判定領域を編集するマスを選択して、そのマスの当たり判定をペイント設定で行います。
※デフォルトでは、マスごとに全部の領域が当たり判定の領域として囲まれています

ペイント設定に、選択したマスの画像が表示されるので、クリックしてポリゴンの頂点を追加して当たり判定の領域を設定します。

Godot4 障害物にするタイルの物理レイヤーの設定2.

配置した頂点はマウスドラッグで移動したり、上部のツールボタンを切り替えて削除したりできます。

Godot4 タイルの物理レイヤーで各タイルの当たり判定を設定できます。

海のタイルマップの場合、陸地は通過可能、海は通過不可にしたいので、海の部分をポリゴン囲みます。

Godot4 タイルの物理レイヤーでポリゴンツールを追加して領域を設定します。

テスト

今回設定した物理レイヤーと各マスの当たり判定の領域の設定によって、障害物のタイル(例では「海」タイル)で CharacterBody2D ベースの操作キャラが止まることを確認できました。

Godot4 タイルの物理レイヤーでポリゴンツールを追加して領域で、操作キャラが止まるようになりました

操作キャラが障害物で止まるようにするための CharacterBody2D クラスへの型の変更と、トップビュー向けのスクリプト例については、次回の以下の記事を参照してください。

関連記事

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、タイルマップに配置した障害物となるマップチップ(タイル)に当たり判定の領域を設定して、操作するキャラクターのノードが障害物のタイルを通過できなくする手順を紹介しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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