부트캠프

타일맵에서 장애물 투명하게 만들기

noyyo 2023. 9. 6. 21:49

타일맵으로 맵을 구성할 때 벽 뒤나 장애물 뒤에 공간이 있을 때 플레이어가 가려지지 않고 보여지면 좋겠어서 방법을 찾아봤다.

장애물을 투명하게 만들기

가장 쉬운 방법은 타일맵으로 맵을 구성할 때 하나의 타일 맵으로 맵을 구성하는게 아니라 여러개의 타일맵으로 나눠서 구성하는 것이다.

 

통과할 수 있는 타일
통과할 수 없는 타일

위와 같이 타일을 나눠서 구성한 다음 타일맵 콜라이더를 붙이고 통과할 수 있는 타일에는 IsTrigger 옵션을 체크해주자.

그 다음 투명하게 해줄 타일맵에 아래의 스크립트를 넣어주자.

public class TileMapTransparency : MonoBehaviour
{
    private Tilemap _tileMap;
    private void Awake()
    {
        _tileMap = GetComponent<Tilemap>();
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Color color = _tileMap.color;
        color.a = 0.4f;
        _tileMap.color = color;
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        Color color = _tileMap.color;
        color.a = 1f;
        _tileMap.color = color;
    }
}

트리거에 들어올 때와 나갈 때 알파 값을 바꿔주는 간단한 스크립트다.

 

이 방법을 사용할 때 단점은 같은 타일맵으로 묶여있는 타일이 모두 투명해진다는 것, 타일별로 투명도가 변하기 때문에 경계가 확실해서 어색하다는 점이 있다.

 

다른 방법으로는 스프라이트에 직접 콜라이더를 여러개 달아서 통과 가능한 콜라이더와 불가능한 콜라이더를 나눠서 투명하게 만드는 방법이 있다.

코드는 콜라이더를 찾는 부분만 달라지고 투명도를 바꾸는 부분은 달라질 게 없다.

그리고 오브젝트 별로 콜라이더 위치만 조정해주면 된다.

 

이 방법은 객체별로 투명해질 수 있기 때문에 훨씬 자연스럽다.

단점으로는 맵과 같은 큰 오브젝트를 각각 설정하기도 어렵고 그렇게 만든다고 해도 오브젝트의 수가 너무 많아져서 성능에 악영향을 줄 수 있다는 점이다.

'부트캠프' 카테고리의 다른 글

HP bar를 스프라이트로 구현하기  (0) 2023.09.11
버튼에 리스너 달기  (0) 2023.09.07
정렬 알고리즘  (0) 2023.09.04
팀 콘솔RPG 프로젝트 마무리  (0) 2023.09.01
팀 콘솔 RPG3  (0) 2023.08.30