물리 피xture 밀도 설정 (physics_fixture_set_density)
물체의 밀도는 단위 부피당 질량으로 정의됩니다. 이는 물체가 차지하는 공간에 얼마나 많은 질량이 들어 있는지를 의미합니다. 예를 들어, 풍선은 큰 공간을 차지하지만 질량이 적기 때문에 낮은 밀도를 가집니다. 반면, 납 막대는 작은 공간을 차지하지만 질량이 크기 때문에 높은 밀도를 가집니다.
GameMaker 2D 물리 세계에서는 입력한 밀도 값과 정의한 형태의 표면적에 따라 질량이 자동으로 계산됩니다. 이는 피xture의 관성에 직접적인 영향을 미치며, 충돌 및 힘에 대한 반응에도 영향을 줍니다. 따라서 높은 밀도를 가진 작은 형태는 매우 큰 질량을 가지게 되고, 낮은 밀도를 가진 큰 형태는 상대적으로 작은 질량을 가지게 됩니다.
참고: 피xture를 받는 인스턴스가 정적(즉, 게임 세계에서 움직이지 않음)으로 만들고 싶다면 밀도를 0으로 설정해야 합니다. 이는 사실상 무한한 밀도를 부여하는 것입니다.
참고: 정적 피xture는 밀도를 0으로 설정한 후phy_speed_x
,phy_speed_y
, 또는phy_angular_velocity
변수를 설정하여 운동 가능하게 만들 수 있습니다.
문법
physics_fixture_set_density(fixture, density)
인수 설명
인수 | 유형 | 설명 |
---|---|---|
fixture | 정수 | 피xture의 인덱스 |
density | 실수 | 피xture의 밀도 (kg/m²로 계산됨) |
반환값
- 없음
예제
physics_fixture_set_density(fix_Balloon, 0.1);
위 코드는 "fix_Ballon"에 인덱스가 있는 피xture의 밀도를 0.1로 설정합니다.
활용 예제
- 풍선 만들기
var fix_Balloon = physics_fixture_add_shape(phy_shape_circle, x, y, radius);
physics_fixture_set_density(fix_Balloon, 0.1);
- 납 막대 만들기
var fix_LeadBar = physics_fixture_add_shape(phy_shape_rectangle, x, y, width, height);
physics_fixture_set_density(fix_LeadBar, 10);
- 정적 물체 만들기
var fix_StaticObject = physics_fixture_add_shape(phy_shape_rectangle, x, y, width, height);
physics_fixture_set_density(fix_StaticObject, 0);
- 운동 가능한 물체 만들기
var fix_KinematicObject = physics_fixture_add_shape(phy_shape_circle, x, y, radius);
physics_fixture_set_density(fix_KinematicObject, 0);
phy_speed_x = 5;
phy_speed_y = 0;
- 다양한 밀도 테스트
var fix_LowDensity = physics_fixture_add_shape(phy_shape_rectangle, x, y, width, height);
physics_fixture_set_density(fix_LowDensity, 0.5);
var fix_HighDensity = physics_fixture_add_shape(phy_shape_rectangle, x + 50, y, width, height);
physics_fixture_set_density(fix_HighDensity, 5);
이와 같은 방법으로 다양한 물체의 밀도를 설정하여 물리적 상호작용을 조정할 수 있습니다.