あなた:
GDScript2でCharacterBody2Dを使ったCollisionを実装している時、今接触しているほかのCollisionをスクリプトで取得する方法は
GDScript 2.0(Godot 4.x)で CharacterBody2D
を使っている場合、「現在接触している他のコリジョン(Collision)」を取得するには、get_slide_collision()
や get_last_slide_collision()
、get_slide_collision_count()
を使います。
gdscriptextends CharacterBody2D func _physics_process(delta): var velocity = Vector2.ZERO # 移動ベクトルを計算(例として右方向に移動) velocity.x = 100 # move_and_slideで移動 velocity = move_and_slide(velocity) # 衝突した数を取得 var collision_count = get_slide_collision_count() for i in range(collision_count): var collision = get_slide_collision(i) if collision: print("衝突相手: ", collision.get_collider())
move_and_slide()
を使った後でないと get_slide_collision()
は意味を持ちません。
get_slide_collision(i)
は KinematicCollision2D
オブジェクトを返します。
その中の get_collider()
で実際にぶつかったオブジェクト(Node
や CollisionObject2D
)を取得できます。
gdscriptfor i in get_slide_collision_count(): var collision = get_slide_collision(i) var other = collision.get_collider() print("今接触している: ", other.name)
必要であれば、そのオブジェクトが特定のグループに入っているかどうかチェックすることもできます:
gdscriptif other.is_in_group("enemies"): print("敵に当たった!")
他にも気になることがあれば、細かく教えてください。タイルとの当たり判定とか、複数同時の接触とか、いろいろあるので!