최대 1 분 소요

이 글은 유튜브 Sebastian Graves Create Dark Souls를 보고 따라 만들면서 헷갈리는 부분을 정리한 글입니다.

구현 개요

무기를 꽉 쥐게 만든다.

애니메이터의 레이어를 추가로 만들고 아바타 마스크를 통해 특정 부위에만 애니메이션을 재생하여

손을 꽉 쥐게 만든다.

추가된 부분

레이어와 아바타 마스크 추가

왼손과 오른손의 아바타 마스크를 만들어준다.

image

image


왼손과 오른손의 레이어를 추가하고 애니메이션을 추가해준다.

오른손

image

image


왼손

image

image

이때 가중치는 애니메이션에 맞게 설정해준다.

WeaponItem 스크립트 수정

무기를 꽉 잡는 애니메이션을 추가해준다.

[CreateAssetMenu(menuName = "Items/Weapon Item")]
public class WeaponItem : Item
{
    public GameObject modelPrefab;
    public bool isUnarmed;

    [Header("Idle Animations")]
    public string right_Hand_Idle;  //추가 
    public string left_hand_idle;  // 추가

    [Header("Attack Animations")]
    public string OH_Light_Attack_01;
    public string OH_Heavy_Attack_01;
    public string OH_Light_Attack_02;
}


WeaponSlotManager 스크립트 수정

무기에 내장된 무기를 잡는 애니메이션을
무기가 로드될 때 자동을 실행되도록 한다.

public void LoadWeaponOnSlot(WeaponItem weaponItem, bool isLeft)
{
    if (isLeft)
    {
        leftHandSlot.LoadWeaponModel(weaponItem);
        LoadLeftWeaponDamageCollider();
        #region Handle Weapon Idel Animations;
        if (weaponItem != null)
        {
            animator.CrossFade(weaponItem.left_hand_idle, 0.2f);
        }
        else
        {
            animator.CrossFade("Left Arm Empty", 0.2f);
        }
        #endregion
    }
    else
    {
        rightHandSlot.LoadWeaponModel(weaponItem);
        LoadRightWeaponDamageCollider();
        #region Handle Right Weapon Idle Animations
        if (weaponItem != null)
        {
            animator.CrossFade(weaponItem.right_Hand_Idle, 0.2f);
        }
        else
        {
            animator.CrossFade("Right Arm Enpty", 0.2f);
        }
        #endregion
    }
}


결과

적용 전

image


적용 후

image


배운점

  • 아바타 마스크를 통해 부위별 애니메이션을 다르게 주는 방법을 알았다.

댓글남기기