Unity

[Unity] 마스크 오브젝트 만들기(오브젝트 숨기기)

Guk-blog 2020. 8. 18. 10:16
728x90
반응형

마스크 오브젝트를 다뤄보겠습니다.

여기서 제가 말한 컬링 오브젝트는 해당 오브젝트는 투명하며 이 오브젝트 뒤에 있는 

타겟 오브젝트와 겹치면 겹친 만큼 가려지게 하려는 것입니다.

 

먼저 필요한 것은 쉐이더와 스크립트 하나인데

먼저 쉐이더는 아래

Shader "Masked/Mask" {

	SubShader{
		// Render the mask after regular geometry, but before masked geometry and
		// transparent things.

		Tags {"Queue" = "Geometry+10" }

		// Don't draw in the RGBA channels; just the depth buffer

		ColorMask 0
		ZWrite On

		// Do nothing specific in the pass:

		Pass {}
	}
}

그리고 스크립트

using UnityEngine;

[AddComponentMenu("Rendering/SetRenderQueue")]

public class SetRenderQueue : MonoBehaviour
{

    [SerializeField]
    protected int[] m_queues = new int[] { 3000 };

    protected void Awake()
    {
        Material[] materials = GetComponent<Renderer>().materials;
        for (int i = 0; i < materials.Length && i < m_queues.Length; ++i)
        {
            materials[i].renderQueue = m_queues[i];
        }
    }
}

 

준비물은 끝났고 오브젝트 두개를 만들었습니다

 

그리고 원(마스크 오브젝트)에 위에서 만든 쉐이더를 적용시켜주고

Render Queue - transparent 3000으로 설정해줍니다

그리고 정육면체에는 스크립트를 붙여주고 queue를 3200으로 설정해 줍니다

그리고 큐브에 새 메터리얼을 입혀주고 surface Type을 transparent로 설정해줍니다

그러면 아래와 같이 가려집니다

 

그리고 큐브의 큐와 컬링 마스크 큐를 조금 손보면

(마스크 오브젝트 큐 3070, 큐브의 Material - Priority = -23)

위와 같은 모습을 볼 수 있습니다.

 

위의 정보로 이것 저것 테스트 하시면서 하시면 아마 손쉽게 원하는 결과를 얻으실 겁니다

질문 사항이 있으시면 댓글로 물어봐주세요

 

728x90
반응형