물리학에서의 로컬 힘 적용
물리학 세계에서 힘을 사용하는 또 다른 방법은 인스턴스에 로컬로 힘을 적용하는 것입니다. 이는 힘의 세기와 방향이 인스턴스의 원점(스프라이트가 없을 경우 위치)에 따라 계산된다는 것을 의미합니다. 게임 룸이나 물리학 세계에서의 방향이나 회전은 고려되지 않습니다. 이 함수는 힘이 객체의 질량 중심이 아닌 인스턴스에 상대적인 점에 적용되며, 중력과 같은 다른 힘에 의존하기 때문에 즉시 적용되지 않는다는 점에 유의해야 합니다.
로컬 힘의 작동 방식
로컬 힘이 어떻게 작동하는지 설명하는 그림을 보면, xlocal 및 ylocal 좌표는 항상 인스턴스의 원점(0,0)을 기준으로 계산됩니다. 따라서 객체가 룸의 어디에 있든 xlocal 및 ylocal은 항상 동일합니다. 그런 다음 힘의 벡터 구성 요소(xforce 및 yforce)를 xlocal/ylocal 위치에 상대적으로 어디에 배치할지를 결정해야 합니다.
정확한 힘은 xlocal/ylocal과 xforce/yforce 간의 거리로 뉴턴 단위로 계산되며, 방향은 xlocal/ylocal에서 xforce/yforce까지의 각도로 정의됩니다. 이 부분이 약간 혼란스러울 수 있지만, 그림을 보면 어떻게 작동하는지 이해할 수 있으며 복잡한 수학을 피할 수 있습니다!
참고: 물리학 세계는 모든 계산에 미터를 사용하며, 미터당 픽셀 비율은 룸 편집기에서 정의되거나 physics_world_create()
를 사용하여 설정됩니다.
문법
physics_apply_local_force(xlocal, ylocal, xforce, yforce)
인수 설명
인수 | 유형 | 설명 |
---|---|---|
xlocal | 숫자 | 힘이 적용될 원점에 대한 상대적인 x 좌표 |
ylocal | 숫자 | 힘이 적용될 원점에 대한 상대적인 y 좌표 |
xforce | 숫자 | 힘 벡터의 x 구성 요소 |
yforce | 숫자 | 힘 벡터의 y 구성 요소 |
반환값
- 없음
예제
if (keyboard_check(vk_right)) {
physics_apply_local_force(-25, 0, -50, 0);
}
위 코드는 오른쪽 화살표 키가 눌릴 때 인스턴스에 원점에 대해 왼쪽에서 오른쪽으로 50 뉴턴의 힘을 적용합니다.
활용 예제
- 캐릭터 이동: 캐릭터가 특정 방향으로 힘을 받아 이동하도록 할 수 있습니다.
gml if (keyboard_check(vk_up)) { physics_apply_local_force(0, -10, 0, -50); }
- 물체 회전: 물체에 회전하는 힘을 적용하여 회전 효과를 줄 수 있습니다.
gml if (keyboard_check(vk_left)) { physics_apply_local_force(0, 0, -10, 0); }
- 충돌 반응: 다른 물체와의 충돌 시 반응을 조정할 수 있습니다.
gml if (collision_check()) { physics_apply_local_force(0, 0, 50, 50); }
- 중력 효과: 중력의 영향을 받는 물체에 추가 힘을 적용할 수 있습니다.
gml physics_apply_local_force(0, 0, 0, -9.8);
- 물리적 상호작용: 여러 물체 간의 상호작용을 통해 복잡한 물리적 시뮬레이션을 구현할 수 있습니다.
gml if (object_nearby()) { physics_apply_local_force(10, 10, 20, 20); }