물리학 임펄스 적용하기
GameMaker의 물리학 기능을 사용하면 객체에 힘과 중력을 적용할 수 있을 뿐만 아니라 임펄스도 적용할 수 있습니다. 임펄스는 힘과 약간 다르며, 적용되면 즉시 속도와 잠재적으로 토크(또는 "회전")에 영향을 미칩니다. 특히 임펄스를 적용할 지점이 질량 중심과 일치하지 않을 경우 더욱 그렇습니다. 질량 중심은 반드시 원점과 같지 않다는 점에 유의하세요.
임펄스 적용 예시
아래 그림을 통해 볼 수 있듯이, 플레이어가 공을 클릭하면 공이 오른쪽 위로 이동하며 회전하는 임펄스를 받습니다. 임펄스의 정확한 값은 xpos/ypos 좌표에 대한 ximpulse/yimpulse 구성 요소의 벡터로 정의됩니다. 이는 xpos/ypos에서 ximpulse/yimpulse까지의 거리를 뉴턴 단위로 계산하고, 방향은 xpos/ypos에서 ximpulse/yimpulse까지의 각도로 결정된다는 것을 의미합니다.
주의사항
- 물리학 세계는 모든 계산에 미터를 사용하며, 픽셀과 미터의 비율은 룸 편집기에서 정의되거나
physics_world_create()
를 사용하여 설정됩니다.
문법
physics_apply_impulse(xpos, ypos, ximpulse, yimpulse)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
xpos | 숫자 | 임펄스가 적용될 룸의 x 좌표 |
ypos | 숫자 | 임펄스가 적용될 룸의 y 좌표 |
ximpulse | 숫자 | 임펄스 벡터의 x 구성 요소 |
yimpulse | 숫자 | 임펄스 벡터의 y 구성 요소 |
반환값
- 없음
활용 예제
아래 코드는 마우스 왼쪽 버튼이 눌렸을 때, 마우스 위치에 있는 인스턴스에 랜덤한 임펄스를 적용하는 예제입니다.
if (mouse_check_button_pressed(mb_left)) {
with (place_meeting(mouse_x, mouse_y, all)) {
physics_apply_impulse(mouse_x, mouse_y, -10 + irandom(20), -10 + irandom(20));
}
}
이 코드는 마우스 위치에 있는 인스턴스에 랜덤한 벡터로 임펄스를 적용합니다.
추가 활용 예제
- 공 튕기기
gml if (keyboard_check_pressed(vk_space)) { physics_apply_impulse(ball.x, ball.y, 0, -500); }
- 물체 밀기
gml if (mouse_check_button_pressed(mb_right)) { physics_apply_impulse(object.x, object.y, 300, 0); }
- 회전하는 물체
gml if (keyboard_check(vk_up)) { physics_apply_impulse(object.x, object.y, 0, -100); }
이러한 예제들은 GameMaker에서 물리학 임펄스를 활용하여 다양한 상호작용을 구현하는 데 도움이 됩니다.