fullstack

[Unity] Spine 오브젝트 tint/dark color 변경하기

Unity

unity 에서 spine 오브젝트 material의 tint color 와 dark color 를 변경하는 방법 입니다

 

우선 shader를 Spine/Skeleton Tint 로 변경해 줍니다

 

코드는 다음과 같습니다

private MeshRenderer _renderer;
private MaterialPropertyBlock _block;

void Start()
{
    _renderer = GetComponent<MeshRenderer>();
    _block = new MaterialPropertyBlock();
    
    _renderer.SetPropertyBlock(_block);
    
    int id = Shader.PropertyToID("_Black");

    _block.SetColor(id, Color.red);
    _renderer.SetPropertyBlock(_block);
}

 

여기서 PropertyToId 를 "_Color" 라고 할 경우 Tint Color를, "_Black" 이라고 할 경우 Dark Color 를 변경할 수 있습니다

 

MaterialPropertyBlock 을 이용하여 원하는 색을 적용시켜 주면 됩니다

 

이를 반복문으로 구현하면 이런식으로 데미지를 받는 것 같은 효과를 줄 수 있습니다

 

 

 

[Unity] Spine 오브젝트에 Mask 적용하는 법

Unity

unity-spine 환경에서 sprite mask 기능을 지원하게 되어서 Spine 오브젝트에 쉽게 Mask를 적용할 수 있습니다

 

unity-spine 예제의 spine boy를 불러와 적용해 보겠습니다

 

 

이 게임오브젝트의 SkeletonAnimation 컴포넌트를 보면 Mask Interaction 이라는 항목이 있습니다

 

여기서 'Visible Inside Mask' 혹은 'Visible Outside Mask' 를 선택하면 되는데,

'Visible Inside Mask'는 추후에 생성할 sprite mask 의 영역만큼만 spine 오브젝트가 마스킹되서 보이게 되고,

'Visible outside Mask'는 sprite mask의 영역을 제외한 만큼만 spine 오브젝트가 보이게 됩니다

 

'Visible Outside Mask'를 선택해 보겠습니다

 

그럼 이렇게 자동으로 OutsideMask 메테리얼이 자동으로 생성되고 해당 spine 오브젝트에 적용이됩니다

 

그럼 이제 Sprite Mask를 생성해야 합니다

 

그리고 Sprite에 Mask 이미지를 선택하기만 하면 됩니다

 

이렇게 마스킹이 잘 되는것을 볼 수 있습니다