ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 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을 적어줘서 반대로 뒤집어 주었다.

     

    문제 없이 잘 붙어있는것같다.

     

    이렇게 공격시에도 잘 따라오는걸 확인할 수 있다. 

     

    복잡해 보였지만 생각보다 쉽게 문제가 해결된 것 같다.

Designed by Tistory.