- 衝突検知の基本:
Godotでは、オブジェクト同士の衝突を検知するために、CollisionShapeまたはArea2Dコンポーネントを使用します。まず、衝突を検知したいオブジェクトにCollisionShapeまたはArea2Dコンポーネントを追加します。その後、以下の手順に従って衝突を検知するコードを書きます。
extends CollisionShape2D
func _ready():
# 衝突を検知するオブジェクトとの信号を接続
connect("body_entered", self, "_on_ObjectEntered")
func _on_ObjectEntered(body):
# 衝突したオブジェクトに対する処理を記述
print("衝突したオブジェクト:", body)
# ここに処理を追加
- 衝突グループとレイヤー:
Godotでは、衝突を検知するオブジェクトをグループやレイヤーに分類することができます。これにより、特定のグループやレイヤーのオブジェクトとの衝突のみを検知することができます。以下は、衝突グループとレイヤーを使用したコード例です。
extends CollisionShape2D
func _ready():
# 衝突グループを設定
set_collision_layer_bit(1, true) # 衝突レイヤー1を有効化
set_collision_mask_bit(2, true) # 衝突レイヤー2との衝突を検知
# 衝突を検知するオブジェクトとの信号を接続
connect("body_entered", self, "_on_ObjectEntered")
func _on_ObjectEntered(body):
# 衝突したオブジェクトに対する処理を記述
print("衝突したオブジェクト:", body)
# ここに処理を追加
- 衝突の種類の判別:
衝突イベントが発生した場合、衝突したオブジェクトの種類を判別することもできます。以下は、衝突したオブジェクトが特定の種類であるかを判別するコード例です。
extends Area2D
func _ready():
# 衝突を検知するオブジェクトとの信号を接続
connect("body_entered", self, "_on_ObjectEntered")
func _on_ObjectEntered(body):
# 衝突したオブジェクトの種類を判別
if body is KinematicBody2D:
print("KinematicBody2Dと衝突しました")
elif body is RigidBody2D:
print("RigidBody2Dと衝突しました")
# ここに処理を追加