물리 피처를 운동 상태로 설정하기
물리 기반 게임에서 특정 객체는 이동할 수 있지만 중력이나 동적 객체와의 충돌로 인한 힘의 영향을 받지 않기를 원할 수 있습니다. 예를 들어, 플랫폼 게임의 이동 플랫폼을 생각해 보세요. 이러한 객체의 경우, 피처의 밀도를 0으로 설정하면 물리 엔진은 해당 객체가 정적(static)으로 의도되었다고 가정합니다. 그러나 이러한 피처가 바인딩된 인스턴스에 대해 phy_speed_x
, phy_speed_y
또는 phy_angular_velocity
변수를 설정하면, 해당 인스턴스는 운동 상태(kinematic)로 변환되어 움직이기 시작합니다.
시뮬레이션 중에 인스턴스를 정적에서 운동 상태로 변경하는 것은 처리 비용이 많이 들 수 있으므로, 피처를 인스턴스에 바인딩하기 전에 이 함수를 사용하여 피처를 운동 상태로 설정하는 것이 좋습니다. 이렇게 하면 충돌 및 중력과 같은 힘의 영향을 받지 않으면서도 일정한 선형 및/또는 각속도로 이동할 수 있습니다.
문법
physics_fixture_set_kinematic(fixture)
인수
인수 | 유형 | 설명 |
---|---|---|
fixture | Physics Fixture ID | 피처의 인덱스 |
반환값
- N/A
예제
physics_fixture_set_kinematic(fix_Cloud);
위 코드는 "fix_Cloud"에 인덱스가 있는 피처를 운동 상태로 표시합니다.
활용 예제
예제 1: 이동 플랫폼 만들기
// 이동 플랫폼 피처 설정
var platform_fixture = physics_fixture_create();
physics_fixture_set_density(platform_fixture, 0);
physics_fixture_set_kinematic(platform_fixture);
예제 2: 캐릭터의 점프 기능 구현
// 캐릭터가 점프할 때 운동 상태로 전환
if (keyboard_check_pressed(vk_space)) {
physics_fixture_set_kinematic(character_fixture);
phy_speed_y = -10; // 위로 점프
}
예제 3: 장애물 회전
// 장애물 회전 설정
var obstacle_fixture = physics_fixture_create();
physics_fixture_set_density(obstacle_fixture, 0);
physics_fixture_set_kinematic(obstacle_fixture);
phy_angular_velocity = 5; // 회전 속도 설정
예제 4: 게임 오브젝트의 이동
// 게임 오브젝트를 오른쪽으로 이동
if (keyboard_check(vk_right)) {
phy_speed_x = 5; // 오른쪽으로 이동
}
이러한 예제들은 물리 기반 게임에서 운동 상태의 피처를 설정하고 활용하는 방법을 보여줍니다.