객체의 깊이 (Depth) 이해하기
GameMaker에서 객체를 생성할 때, 초기 깊이 (depth)를 지정할 수 있습니다. 이 깊이는 게임 진행 중에 해당 객체의 인스턴스가 방에서 어떻게 그려질지를 정의합니다. 게임이 실행되는 동안 이 변수를 이용하여 깊이 값을 가져오거나 변경할 수 있습니다.
깊이 (Depth)의 개념
- 초기 깊이: 객체 인스턴스를 만들 때 기본 깊이를 지정합니다.
- 일반적인 사용: 인스턴스는 특정 깊이가 설정되어 있는 개별 레이어에 추가됩니다.
- 임시 레이어: 깊이 값을 사용하여 인스턴스의 깊이를 변경하면 해당 깊이에 임시 레이어가 생성됩니다. 이 임시 레이어는 같은 깊이에 인스턴스가 없으면 메모리에서 제거됩니다.
깊이 값 변경 시 주의사항
- 레벨의 시각적 효과: 깊이 값이 낮을수록 카메라에 더 가까이 그리고, 높을수록 멀리 그립니다. 예를 들어, -1000은 -100보다 위에 그려지고, -100은 0 위에 그려지는 식입니다.
- 동일 깊이 처리: 동일한 깊이를 가진 인스턴스는 방 편집기에서의 순서와 관계없이 서로 위 또는 아래에 그려질 수 있습니다.
- 해상도 차이: 다른 플랫폼에서 일관성을 보장하기 어려운 점을 유의해야 합니다.
- 최소 및 최대 깊이 값: 깊이는 -16000과 16000 사이여야 하며, 이 범위를 벗어난 깊이는 그려지지 않지만 여전히 존재하고 이벤트를 처리합니다.
깊이 값 사용법
깊이 수정 방법
깊이 값을 코드로 수정할 수 있으며, Draw 이벤트에서는 gpu_set_depth를 사용하여 그릴 깊이를 설정할 수 있습니다.
예제 코드
if (y != yprevious) {
depth = -y;
}
이 코드는 y 위치가 변경되었는지를 확인하고, 변경되었다면 깊이를 y에 맞춰 설정합니다.
필터 및 효과와 깊이
깊이를 변경하면 해당 인스턴스에 적용된 필터와 효과가 변경될 수 있습니다. FX 레이어의 깊이보다 낮은 깊이에 설정하면 더 이상 효과가 적용되지 않으므로 유의해야 합니다.
활용 및 응용 예제
| 예제 번호 | 예제 설명 | 코드 예제 |
|---|---|---|
| 1 | 적 캐릭터 깊이 변경 | gml depth = -y; |
| 2 | 배경 요소 깊이 고정 | gml depth = 500; |
| 3 | UI 요소를 항상 위에 그리기 | gml depth = -20000; |
| 4 | 게임에서 움직이는 적의 깊이 조정 | gml if (instance_exists(enemy)) { depth = -y; } |
| 5 | 깊이에 따라 효과 적용 | gml if (depth < 0) { gpu_set_depth(depth); } |
이와 같이 깊이 설정은 게임의 시각적 요소를 제어하는 중요한 역할을 하며, 고유한 효과를 만들어내는 데 사용될 수 있습니다. 깊이를 적절히 조정하여 다양한 효과와 게임 경험을 극대화할 수 있습니다.