목표 : 탑다운 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 |