Godot:KinematicBody2D
사용자가 제어할 수 있는 특수한 유형의 2D 몸체.
그들은 물리학의 영향을 전혀 받지 않습니다.
캐릭터나 강체와 같은 다른 유형의 몸체에 대해서는 정적 몸체와 동일합니다.
용도
두 가지 주요 용도가 있습니다.
- 시뮬레이션된 모션
- 이 바디가 코드 또는 AnimationPlayer (AnimationPlayer.playback_process_mode 를
physics
로 설정)에서 수동으로 이동하면 물리학이 선형 및 각속도의 추정치를 자동으로 계산합니다. - 따라서 플랫폼이나 다른 AnimationPlayer 제어 개체(예: 문, 열리는 다리 등)를 이동하는 데 매우 유용합니다.
- 운동학적 캐릭터
- KinematicBody2D에는 충돌 테스트를 수행하는 동안 객체를 이동하기 위한 API(#move_and_collide 및 #move_and_slide 메서드)도 있습니다.
- 이것은 월드와 충돌하는 캐릭터를 구현하는 데 정말 유용하지만 고급 물리학이 필요하지 않습니다.
move_and_collide
KinematicCollision2D move_and_collide ( Vector2 rel_vec, bool infinite_inertia=true, bool exclude_raycast_shapes=true, bool test_only=false )
벡터 rel_vec
를 따라 몸체를 이동합니다. 충돌하면 몸이 멈춥니다.
정지했을 때 또는 모션을 따라 다른 바디를 건드릴 때 충돌에 대한 정보가 포함 된 KinematicCollision2D를 반환합니다 .
test_only
가 true
이면, 몸체는 움직이지 않지만 충돌 가능성 정보가 제공됩니다.
move_and_slide
Vector2 move_and_slide ( Vector2 linear_velocity, Vector2 up_direction=Vector2( 0, 0 ), bool stop_on_slope=false, int max_slides=4, float floor_max_angle=0.785398, bool infinite_inertia=true )
벡터를 따라 몸체를 이동합니다.
본체가 다른 본체와 충돌하면 즉시 정지하지 않고 다른 본체를 따라 미끄러집니다.
다른 몸체가 KinematicBody2D또는 RigidBody2D 인 경우 다른 몸체의 모션에도 영향을 받습니다.
이것을 사용하여 이동 및 회전 플랫폼을 만들거나 노드가 다른 노드를 푸시하도록 할 수 있습니다.
이 방법은 계산에서 물리 단계의 delta
값을 자동으로 사용하므로 Node._physics_process에서 사용해야 합니다. 그렇지 않으면 시뮬레이션이 잘못된 속도로 실행됩니다.
-
linear_velocity
는 초당 픽셀 단위의 속도 벡터입니다. #move_and_collide와 달리delta
를 곱하면 안 됩니다. (물리 엔진이 속도 적용을 처리합니다) -
up_direction
는 위쪽 방향으로, 무엇이 벽이고 바닥인지 천장인지 판별하는 데 사용됩니다. 기본값인Vector2(0, 0)
로 설정하면 모든 것이 벽으로 간주됩니다. 이것은 하향식 게임(Top-Down)에 유용합니다. - 만약
stop_on_slope
이 참이면,linear_velocity
에 중력을 포함하고 몸체가 정지해 있을 때, 몸체는 경사면에서 미끄러지지 않습니다. - Body가 충돌하면, 정지하기 전에 최대
max_slides
횟수만큼 방향을 변경합니다. -
floor_max_angle
은 경사가 여전히 벽이 아닌 바닥(또는 천장)으로 간주되는 최대 각도(라디안)입니다. 기본값은 45도입니다. -
infinity_inertia
가-
true
면 Body는 RigidBody2D 노드를 푸시할 수 있지만 이들과의 충돌도 감지하지 않습니다. -
false
면 StaticBody2D와 같이 RigidBody2D 노드와 상호 작용합니다.
-
슬라이드 충돌이 발생한 경우 회전 및 크기가 조정된 linear_velocity
벡터를 반환합니다. 발생한 충돌에 대한 자세한 정보를 얻으려면 #get_slide_collision을 사용하십시오.
몸체가 움직이는 플랫폼에 닿으면 플랫폼의 속도가 몸체 모션에 자동으로 추가됩니다. 플랫폼의 움직임으로 인해 충돌이 발생하면 항상 슬라이드 충돌에서 먼저 발생합니다.