mp_linear_step_object 함수 설명
mp_linear_step_object
함수는 인스턴스가 특정 지점으로 "단계"를 이동하도록 지시하는 함수입니다. 이 함수는 목표 위치를 xgoal
과 ygoal
값으로 지정하며, 이동하는 단계의 크기(픽셀 단위)는 stepsize
로 설정합니다. 만약 인스턴스가 이미 목표 위치에 도달했다면, 더 이상 이동하지 않습니다. 이는 move_towards_point()
와 같은 다른 간단한 함수와는 다릅니다. stepsize
는 충돌을 확인할 거리이기도 하며, 인스턴스가 충돌하는 경우 멈출지 여부를 선택할 수 있습니다.
구문
mp_linear_step_object(xgoal, ygoal, stepsize, obj);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
xgoal | 실수 | 목표 x 위치 |
ygoal | 실수 | 목표 y 위치 |
stepsize | 실수 | 인스턴스가 한 단계 이동하는 속도 (픽셀) |
obj | 객체 자산 또는 인스턴스 ID | 경로를 차단할 객체. 객체 인덱스, 인스턴스 ID 또는 특별 키워드 all 이 될 수 있음 |
반환 값
- Boolean: 이동이 성공적으로 이루어졌는지 여부
예제 코드
if (mp_linear_step_object(mouse_x, mouse_y, 5, obj_Wall)) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}
위 코드는 객체가 마우스를 향해 초당 5픽셀의 속도로 이동하도록 하며, "obj_Wall" 객체와의 충돌만을 확인합니다. 마우스 위치에 도달하면 "obj_Explosion" 객체를 생성하고 자신을 파괴합니다.
활용 예제
1. 적 캐릭터의 이동
적 캐릭터가 플레이어를 향해 이동하도록 설정할 수 있습니다.
if (mp_linear_step_object(player.x, player.y, 3, obj_Player)) {
// 적 캐릭터의 행동
}
2. 장애물 회피
장애물에 부딪히지 않도록 이동하는 NPC를 만들 수 있습니다.
if (!mp_linear_step_object(target.x, target.y, 4, obj_Obstacle)) {
// 장애물 회피 로직
}
3. 특정 위치로의 이동
특정 위치로 이동하면서 충돌을 체크하는 기능을 구현할 수 있습니다.
if (mp_linear_step_object(100, 200, 2, obj_Block)) {
// 도착 후 수행할 작업
}
4. 경로 추적
복잡한 경로를 따라 이동하는 객체를 만들 수 있습니다.
if (mp_linear_step_object(path_x, path_y, 1, obj_Enemy)) {
// 경로를 따라 이동
}
5. 게임 오브젝트의 애니메이션
이동 중에 애니메이션을 재생하는 기능을 추가할 수 있습니다.
if (mp_linear_step_object(target.x, target.y, 5, obj_Wall)) {
sprite_index = spr_Move;
} else {
sprite_index = spr_Idle;
}