개발일지/코드 기록

유니티2D 탑다운 캐릭터 위치에 따른 오브젝트 레이어 정렬

개발자 슈니 2022. 9. 26. 12:44
728x90
반응형

위처럼 캐릭터가 어떤 오브젝트의 아래로 가면 캐릭터가 위로 오고

뒤로 가면 캐릭터가 가려지게 해보자

우선 오브젝트의 인스펙터 창에서

피봇을 찾아 바텀으로 설정해준다

그런 다음 스크립트를 만든다

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LayerSetting : MonoBehaviour
{
    SpriteRenderer spriteRen;

    void Start()
    {
        spriteRen = GetComponent<SpriteRenderer>();
        spriteRen.sortingOrder = Mathf.RoundToInt(transform.position.y) * -1;
    }
}

 

LayerSetting 이라는 스크립트를 만들고 다음과 같이 작성한다

그리고 플레이어의 스크립트에도 똑같이 스프라이트 렌더러 컴포넌트를 작성하고

초기화해준다

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAction : MonoBehaviour
{
    SpriteRenderer myRenderer;

    void Awake()
    {
        myRenderer = GetComponent<SpriteRenderer>();
    }

    void Update()
    {
        myRenderer.sortingOrder = Mathf.RoundToInt(transform.position.y) * -1;
    }

 

유튜브의 DevGomDol님의 영상을 통해 얻게 된 지식!

영상을 시청하면 더 자세한 설명도 해주신다^^

https://youtu.be/1CPQzoYFMog

 

+ 그외 다른 방법도 있어서 추가한다

에디터 좌측 상단에 Edit을 클릭하고

Project Setting -> Graphics 에서 Camera Settings 모드를 CustomAxis로 변경한뒤

Transparency Sort Axis를 0,1,0 으로 맞춰준다

이러면 레이어가 같은 스프라이트 렌더러는 좌표 y축에 따라 바뀌는 기능을 할 수 있단다

728x90
반응형