PhysicsBody2D 소개
PhysicsBody2D는 Godot 엔진의 2D 물리 시스템에서 사용되는 기본 클래스입니다. 이 클래스는 물리적 상호작용을 구현하는 모든 2D 물리 바디의 기반이 되며, 이를 상속받아 CharacterBody2D, RigidBody2D, StaticBody2D와 같은 구체적인 물리 객체를 구현할 수 있습니다.
PhysicsBody2D는 물체 간 충돌, 중력, 이동 등의 물리적 동작을 제어할 수 있는 다양한 기능을 제공합니다. 특히, 충돌 예외 설정, 중력 계산, 이동 테스트 등 게임 개발에서 중요한 물리적 동작을 세밀하게 다룰 수 있도록 설계되어 있습니다.
주요 특징:
- 충돌 예외 처리: 특정 객체와의 충돌을 방지하거나 예외로 설정할 수 있습니다.
- 중력 계산: 전역 중력 및 특정 영역(Area2D)의 중력 설정을 통합적으로 계산합니다.
- 충돌 감지 및 이동: 바디 이동 시 충돌 정보를 확인하거나, 실제 이동 없이 충돌 가능성을 테스트할 수 있습니다.
PhysicsBody2D는 기본적으로 추상 클래스이며, 이를 기반으로 다양한 물리 동작을 구현할 수 있습니다. 예를 들어, 캐릭터의 정교한 움직임이나 벽과의 충돌 반응, 중력 효과를 처리하는 데 활용할 수 있습니다.
Godot 엔진의 물리적 상호작용을 완벽하게 이해하고 활용하고자 한다면, PhysicsBody2D의 개념과 메서드를 익히는 것이 매우 중요합니다. 이를 통해 더욱 정교하고 매끄러운 게임 환경을 설계할 수 있습니다.
PhysicsBody2D를 통해 게임 속 물체에 생동감을 불어넣어 보세요!
PhysicsBody2D
상속 구조:
CollisionObject2D < Node2D < CanvasItem < Node < Object
상속받는 클래스:
CharacterBody2D, RigidBody2D, StaticBody2D
PhysicsBody2D는 물리적인 영향을 받는 2D 게임 객체의 추상 기본 클래스입니다.
설명
PhysicsBody2D는 Godot의 2D 물리 시스템에서 사용되는 기본 클래스입니다. 모든 2D 물리 바디는 이 클래스를 상속받습니다.
관련 튜토리얼
프로퍼티
타입 | 이름 | 기본값 | 설명 |
---|---|---|---|
bool | input_pickable | false | 이 객체가 입력 이벤트를 받을 수 있는지 여부를 결정합니다. (CollisionObject2D를 재정의함) |
메서드
반환 타입 | 메서드 이름 | 설명 |
---|---|---|
void | add_collision_exception_with(body: Node) | 해당 바디와 충돌하지 않도록 예외로 설정합니다. |
Array[PhysicsBody2D] | get_collision_exceptions() | 충돌 예외로 추가된 노드의 배열을 반환합니다. |
Vector2 | get_gravity() const | 이 바디에 영향을 미치는 모든 중력을 계산한 중력 벡터를 반환합니다. |
KinematicCollision2D | move_and_collide(motion: Vector2, …) | 바디를 주어진 방향으로 이동시키며, 충돌 정보를 반환합니다. |
void | remove_collision_exception_with(body: Node) | 충돌 예외 목록에서 지정된 바디를 제거합니다. |
bool | test_move(from: Transform2D, motion: Vector2, …) | 바디를 이동시키지 않고 충돌 여부를 확인합니다. |
메서드 설명
add_collision_exception_with(body: Node)
특정 노드를 충돌 예외 목록에 추가하여, 이 바디가 해당 노드와 충돌하지 않도록 설정합니다.
get_collision_exceptions()
충돌 예외로 설정된 노드들의 배열을 반환합니다.
get_gravity() const
현재 바디에 영향을 미치는 중력 벡터를 반환합니다. 이 값은 전역 중력 및 Area2D 노드에서 설정된 중력 오버라이드를 포함하여 계산됩니다.
move_and_collide(motion: Vector2, test_only: bool = false, …)
- 바디를 motion 벡터 방향으로 이동시킵니다.
- 충돌이 발생하면 KinematicCollision2D 객체를 반환하며, 여기에는 충돌 데이터가 포함됩니다.
- test_only가 true이면, 바디는 실제로 이동하지 않고 충돌 정보를 반환합니다.
- safe_margin은 충돌 복구를 위한 추가 마진을 나타냅니다.
예시:
var collision = move_and_collide(Vector2(10, 0)) if collision: print("충돌 발생: ", collision.get_collider().name)
remove_collision_exception_with(body: Node)
지정된 바디를 충돌 예외 목록에서 제거합니다.
test_move(from: Transform2D, motion: Vector2, …)
- 바디를 이동하지 않고 충돌 여부를 확인합니다.
- 가상의 위치, 크기, 회전을 적용한 뒤, 주어진 motion 벡터 방향으로 이동을 테스트합니다.
- 충돌이 발생할 경우 true를 반환하며, 추가 충돌 데이터를 사용할 수 있습니다.
예시:
var collision = KinematicCollision2D.new() if test_move(transform, Vector2(10, 0), collision): print("충돌 예상 위치: ", collision.get_collider().name)
PhysicsBody2D는 CharacterBody2D, RigidBody2D, StaticBody2D와 같은 다양한 물리 객체의 기반 클래스입니다. 이를 통해 게임 내 물체 간의 충돌, 중력, 복구 동작을 세밀하게 제어할 수 있습니다.