스켈레톤 본 데이터 설정
스켈레톤 애니메이션은 여러 개의 "본"으로 구성되어 있으며, 이 본들은 애니메이션 프로그램에서 정의되고 이름이 지정됩니다. 이 함수는 특정 본에 대한 데이터를 언제든지 설정하는 데 사용됩니다. 주의할 점은 이 데이터가 스켈레톤의 기본 포즈를 참조한다는 것이며, 현재 그려지고 있는 포즈에 대해서는 skeleton_bone_state_set() 함수를 사용해야 한다는 것입니다. 이 데이터는 미리 생성된 DS 맵에서 설정해야 하며, 다음과 같은 키와 그에 해당하는 값이 포함되어야 합니다:
| 키 | 설명 |
|---|---|
| "x" | 부모 본에 대한 본의 로컬 x 위치 |
| "y" | 부모 본에 대한 본의 로컬 y 위치 |
| "angle" | 부모 본에 대한 본의 로컬 회전 |
| "xscale" | 본의 로컬 수평 스케일 |
| "yscale" | 본의 로컬 수직 스케일 |
| "parent" | 부모 본의 이름 (문자열) |
문법
skeleton_bone_data_set(bone, map);
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| bone | String | 본의 이름 (문자열) |
| map | DS Map ID | 본 데이터를 저장하는 (미리 생성된) DS 맵 |
반환값
N/A
예제
var bone_map = ds_map_create();
skeleton_bone_data_get("head", bone_map);
ds_map_replace(bone_map, "parent", "body");
skeleton_bone_data_set("head", bone_map);
ds_map_destroy(bone_map);
위의 코드는 DS 맵을 생성하고 "head"라는 본의 데이터로 채운 후, 맵에서 "parent" 본 키를 새로운 값으로 교체하고, 새로운 데이터 세트로 "head" 본을 다시 설정합니다.
활용 예제
예제 1: 본의 위치 변경
var bone_map = ds_map_create();
skeleton_bone_data_get("arm", bone_map);
ds_map_replace(bone_map, "x", 50);
skeleton_bone_data_set("arm", bone_map);
ds_map_destroy(bone_map);
예제 2: 본의 회전 설정
var bone_map = ds_map_create();
skeleton_bone_data_get("leg", bone_map);
ds_map_replace(bone_map, "angle", 30);
skeleton_bone_data_set("leg", bone_map);
ds_map_destroy(bone_map);
예제 3: 본의 스케일 조정
var bone_map = ds_map_create();
skeleton_bone_data_get("torso", bone_map);
ds_map_replace(bone_map, "xscale", 1.5);
ds_map_replace(bone_map, "yscale", 1.5);
skeleton_bone_data_set("torso", bone_map);
ds_map_destroy(bone_map);
이러한 예제들은 본의 위치, 회전 및 스케일을 변경하는 방법을 보여줍니다.