본문 바로가기

개발/unity

[Unity] 2d 오브젝트 정렬

목표 : 탑다운 2d게임에서 플레이어가 장애물 뒤에 있을 때는 장애물에 가려서 보이지 않고 

장애물 앞에 있을 때는 장애물이 플레이어 뒤쪽으로 보이는 것을 구현

 

 

1. pivot 수정

 

장애물과 플레이어 sprite의 pivot을 bottom으로 설정

+ 필요에 따라 Sprite Editor에 들어가서 Custom Pivot값을 직접 설정할 수도 있다.

 

 

 

2. 스크립트

order in layer = 값이 작을수록 뒤쪽으로 배치된다.

y값에 반비례하게  order in layer크기를 설정할 것이다.

예를 들어 플레이어 y값이 -1이고 장애물 y값이 0이면

플레이어가 장애물 앞에 있다는 것이므로

장애물의 order in layer값을 작게 해야서 플레이어보다 뒤쪽에 배치되게 만든다.

 

 

 

Layer Order Manager 스크립트

장애물 오브젝트에 이 스크립트를 추가해 준다.

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

public class LayerOrderManager : MonoBehaviour
{
    SpriteRenderer sr;
    void Start()
    {
        sr = GetComponent<SpriteRenderer>();
        sr.sortingOrder = Mathf.RoundToInt(transform.position.y) * -1;
        //반비례 하게 설정 <--> -1를 곱한다.
    }
}

 

 

 

player 스크립트

플레이어 스크립트에 다음을 추가해 준다.

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

public class Player : MonoBehaviour
{
    SpriteRenderer sprite;
    
    void Awake()
    {  sprite = GetComponent<SpriteRenderer>();    }

    void Start()
    {
    }

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

 

 

 

 

 

'개발 > unity' 카테고리의 다른 글

[Unity] UniTask vs Coroutine  (0) 2025.07.06
[MCP] MCP Unity 적용  (0) 2025.04.25
[Unity] 다른 오브젝트들의 충돌 탐지  (0) 2023.12.23
[Unity] A* 알고리즘 (길 찾기)  (0) 2023.12.21
[Unity] Canvas와 Main camera 겹치기  (0) 2022.12.19