객체 존재 여부 확인
이 문서는 객체 존재 여부를 확인하는 데 사용되는 기능에 대해 설명합니다. 이 기능은 호출하는 인스턴스의 충돌 마스크를 기반으로 특정 위치에 객체가 있는지 확인합니다. 아래에 이 기능을 이용하는 방법과 다양한 활용 예제를 설명하겠습니다.
기능 설명
- 기능: 특정 위치에 아무 객체가 있는지를 확인합니다.
- 반환값:
true: 해당 위치에 충돌이 존재false: 해당 위치에 충돌이 없음- 인수:
x: 확인할 x 위치y: 확인할 y 위치
충돌은 호출하는 인스턴스의 충돌 마스크가 주어진 위치의 어떤 인스턴스와 겹치는지에 따라 계산됩니다. 충돌 마스크가 유효한 인스턴스, 즉 sprite_index에 스프라이트가 할당되어 있거나 mask_index에 스프라이트가 할당된 경우에만 충돌이 감지됩니다.
Note: "If" 블록에 액션을 추가하려면, 해당 액션의 옆으로 드래그해야 합니다.
예제 코드
충돌을 확인하고, 충돌이 있을 경우 인스턴스를 빨간색으로 혼합하고, 그렇지 않을 경우 정상(흰색)으로 유지하는 코드입니다.
if (if_any_object_at_place(x, y)) {
// 충돌이 발견되면 빨간색으로 혼합
image_blend = c_red;
} else {
// 충돌이 없으면 정상 유지
image_blend = c_white;
}
활용 예제
| 예제 설명 | 코드 스니펫 |
|---|---|
| 인스턴스가 적과 충돌 시 다치게 하기 | gml if (if_any_object_at_place(x, y)) { health -= 10; } |
| 인스턴스가 벽과 충돌 시 반대 방향으로 이동 | gml if (if_any_object_at_place(x + hspeed, y)) { hspeed = -hspeed; } |
| 특정 영역에서 적 감지하기 | gml if (if_any_object_at_place(mouse_x, mouse_y)) { spawn_enemy(); } |
| 플레이어가 아이템을 수집할 때 | gml if (if_any_object_at_place(player.x, player.y)) { collect_item(); } |
| 장애물에 부딪히면 속도 감소 | gml if (if_any_object_at_place(x, y + 1)) { hspeed *= 0.5; } |
정리
이 기능은 게임 개발에서 매우 유용하게 활용될 수 있으며, 다양한 상황에서 객체의 위치와 상호작용을 확인하는 데 도움을 줄 수 있습니다. 추가로, 게임의 여러 다른 요소와 결합하여 더욱 풍부한 인터랙션을 만들어 낼 수 있습니다.