카테고리 없음
유니티 3D 캐릭터에 장비 부착하는 법
이황충
2024. 6. 10. 23:46
유니티 게임개발캠프 TIL 36일차
유니티 에셋스토어에서 무료로 받을 수 있는 'Unity Chan'이라는 에셋을 이용해서 작업을 진행하고있다.
이 캐릭터에다가 장비아이템을 착용시켜주고 싶어서 방법을 찾아본 결과 'GetBoneTransform(HumanBodyBones.RightHand)'이라는 걸 통해
해당 캐릭터의 손위치에 장비를 위치 시킬 수 있다는걸 알았다.
그래서 다음과 같이 장비를 장착하는 부분에 코드를 적용해 주었다.
public void EquipItem(ItemData item)
{
if (item.itemPrefab != null)
{
Transform handTransform = CharacterManager.Instance.Player.controller.animator.GetBoneTransform(HumanBodyBones.RightHand);
GameObject equippedItem = Instantiate(item.itemPrefab, handTransform);
// 부모 설정 (로컬 트랜스폼 유지)
equippedItem.transform.SetParent(handTransform, false);
CharacterManager.Instance.Player.controller.SetEquippedItem(equippedItem);
EquipTool equipTool = equippedItem.GetComponent<EquipTool>();
if (equipTool != null)
{
CharacterManager.Instance.Player.status.EquipItem(equipTool);
}
}
}
이런식으로 해주고 실행해보니
장착은 됐는데 검이 땅에 떨어져 있었다.
원인을 파악해 본 결과 해당 아이템에 Rigidbody 컴포넌트가 붙어 있어서 그랬던거였다.
Rigdbody 컴포넌트를 제거하고 실행해보니
일단 손에 붙어있다. 그런데 보다시피 검이 반대로 들려있다. 그래서 해당 아이템 프리펩에 로테이션X값을 180을 적어줘서 반대로 뒤집어 주었다.
문제 없이 잘 붙어있는것같다.
이렇게 공격시에도 잘 따라오는걸 확인할 수 있다.
복잡해 보였지만 생각보다 쉽게 문제가 해결된 것 같다.