인스턴스 생성 함수 (`instance_create_depth`) 설명서
이 문서에서는 GameMaker에서 사용하는 `instance_create_depth` 함수를 쉽게 설명하고 예제를 제공합니다. 이 함수는 특정 객체의 새 인스턴스를 방 안의 주어진 지점에 생성하고, 지정된 깊이(depth)로 배치합니다.
## 함수 개요
### 함수 설명
- **`instance_create_depth`** 함수를 사용하여 주어진 좌표 `(x, y)`에서 특정 객체의 인스턴스를 생성합니다.
- 깊이(depth)는 임의의 값으로 설정할 수 있으며, 깊이가 낮을수록 카메라에 더 가깝게 보이고, 깊이가 높을수록 멀리 떨어져 있게 됩니다. 예를 들어, 깊이 `-200`의 인스턴스는 깊이 `+300`의 인스턴스 위에 그려집니다.
### 방 레이어
- 이 함수는 인스턴스를 위한 방 레이어를 생성합니다. 모든 인스턴스는 방 안의 레이어에 있어야 하며, 이 레이어는 GameMaker에 의해 자동으로 생성된 것입니다. 이 레이어에 접근할 수 없으며, `layer_instance` 변수는 `-1`을 반환합니다.
### 주의사항
- 방 변경 함수를 같은 이벤트에서 호출한 후 이 함수를 호출하면 다르게 작동합니다. 이는 `room_goto` 함수 관련 문서에서 자세한 내용을 확인할 수 있습니다.
- 이 함수는 새 인스턴스의 ID를 반환하며, 이 ID는 변수를 저장하거나 인스턴스에 접근하는 데 사용됩니다.
- 인스턴스가 생성되기 전에 변수 정의가 설정되고 나서, 인스턴스의 Create 이벤트가 실행됩니다.
## 문법
instance_create_depth(x, y, depth, obj, [var_struct]);
### 인자 설명
|인자 이름|타입|설명|
|---|---|---|
|`x`|Real|주어진 객체의 인스턴스가 생성될 x 위치|
|`y`|Real|주어진 객체의 인스턴스가 생성될 y 위치|
|`depth`|Real|생성된 인스턴스에 지정할 깊이|
|`obj`|Object Asset|생성할 인스턴스의 객체 인덱스|
|`var_struct`|Struct|새 인스턴스에 할당할 변수를 포함하는 구조체 (옵션)|
## 반환 값
- **객체 인스턴스 ID**
## 예제
### 예제 1: 기본 사용법
```gml
var inst = instance_create_depth(x, y, -100, obj_Bullet);
with (inst) {
speed = other.shoot_speed;
direction = other.image_angle;
}
위의 코드는 깊이 -100
에서 obj_Bullet
객체의 새 인스턴스를 생성하고, 인스턴스 ID를 변수 inst
에 저장합니다. 이후 speed
와 direction
값을 새 인스턴스에 할당합니다.
예제 2: 구조체를 사용한 변수 할당
var inst = instance_create_depth(x, y, -100, obj_bullet, {speed: shoot_speed, direction: image_angle});
위 코드는 obj_bullet
인스턴스를 생성하고, 마지막 인자로 구조체를 전달합니다. 이 구조체는 속도와 방향을 지정하며, 호출 인스턴스에서 값을 가져옵니다. 이 변수는 Create 이벤트가 실행되기 전에 새 인스턴스에 적용됩니다.
예제 3: 복잡한 구조체 할당
// 구조체를 생성하고 사용
var bulletProperties = {speed: 10, direction: 45};
var inst = instance_create_depth(x, y, -100, obj_Bullet, bulletProperties);
위의 예제는 미리 정의된 구조체 bulletProperties
를 사용하여 인스턴스 속성을 설정합니다.
결론
instance_create_depth
함수는 인스턴스를 생성할 때 깊이와 개인화된 속성을 동시에 설정할 수 있는 강력한 도구입니다. 다양한 방법으로 활용할 수 있으며, 게임의 동작을 유연하게 조정하는 데 큰 도움이 됩니다. ```