스켈레톤 본 데이터 가져오기
스켈레톤 애니메이션은 여러 개의 "본"으로 구성되어 있으며, 이 본들은 애니메이션 프로그램에서 정의되고 이름이 지정됩니다. 이 함수는 특정 본에 대한 정보를 가져와서 미리 생성한 빈 DS 맵에 저장하는 데 사용됩니다. 주의할 점은 이 데이터가 스켈레톤의 기본 포즈를 참조하며, 현재 그려지고 있는 포즈가 아니라는 것입니다. 현재 포즈의 데이터가 필요하다면 skeleton_bone_state_get() 함수를 사용해야 합니다.
함수 설명
이 함수를 호출하면 맵에는 다음과 같은 키가 채워집니다:
| 키 | 설명 |
|---|---|
| x | 부모 본에 대한 본의 로컬 x 위치 |
| y | 부모 본에 대한 본의 로컬 y 위치 |
| angle | 부모 본에 대한 본의 로컬 회전 |
| xscale | 부모 본에 대한 본의 로컬 수평 스케일 |
| yscale | 부모 본에 대한 본의 로컬 수직 스케일 |
| parent | 부모 본의 이름 (문자열) |
문법
skeleton_bone_data_get(bone, map);
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| bone | String | 본의 이름 (문자열) |
| map | DS Map ID | 본 데이터를 받을 (미리 생성된) DS 맵 |
반환값
N/A
예제
다음 코드는 DS 맵을 생성하고 "leftarm"이라는 본의 데이터를 채웁니다.
bone_map = ds_map_create();
skeleton_bone_data_get("leftarm", bone_map);
위 코드는 DS 맵을 생성한 후 "leftarm"이라는 본의 데이터로 채웁니다.
활용 예제
- 본 위치 업데이트
본의 위치를 업데이트하고 싶을 때, 가져온 데이터를 사용하여 본의 위치를 조정할 수 있습니다.gml var bone_map = ds_map_create(); skeleton_bone_data_get("leftarm", bone_map); var new_x = ds_map_find_value(bone_map, "x") + 10; // x 위치를 10만큼 이동 - 본 회전 적용
본의 회전을 적용하여 애니메이션을 만들 수 있습니다.gml var bone_map = ds_map_create(); skeleton_bone_data_get("leftarm", bone_map); var rotation_angle = ds_map_find_value(bone_map, "angle") + 15; // 회전 각도를 15도 추가 - 본 스케일 조정
본의 스케일을 조정하여 크기를 변경할 수 있습니다.gml var bone_map = ds_map_create(); skeleton_bone_data_get("leftarm", bone_map); var new_xscale = ds_map_find_value(bone_map, "xscale") * 1.5; // x 스케일을 1.5배로 증가 - 부모 본 정보 확인
본의 부모 정보를 확인하여 계층 구조를 이해할 수 있습니다.gml var bone_map = ds_map_create(); skeleton_bone_data_get("leftarm", bone_map); var parent_bone = ds_map_find_value(bone_map, "parent"); // 부모 본 이름 가져오기 - 본 데이터 저장
본의 데이터를 저장하여 나중에 사용할 수 있습니다.gml var bone_map = ds_map_create(); skeleton_bone_data_get("leftarm", bone_map); // 본 데이터 저장 로직 추가
이와 같은 방법으로 스켈레톤 본 데이터를 활용하여 다양한 애니메이션 효과를 만들 수 있습니다.