2022. 1. 13. 21:28ㆍGame Development/Unity
1. Sprite Renderer의 Flip 속성 이용
Flip 속성을 통해 X축, Y축, 혹은 둘 다 반전에 대한 축으로 설정할 수 있지만, 렌더링만 영향을 받는 단점이 있다.
다음은 2D Capsule 게임 오브젝트를 하나 생성하고, 하위 자식으로 2D Circle 게임 오브젝트를 생성해서 넣어놨다. 캡슐은 상하좌우 모두 반전에 대해 대칭이므로 구분을 할 수 있게, 다른 모양으로 Sprite를 바꿔놨다.
유니티를 통해 위와 같이 실험을 진행했다. 보면 알겠지만, 2D Capsule 게임 오브젝트의 렌더링 부분만 영향을 미친다. 하위 자식으로 생성했던 2D Circle 게임 오브젝트는 아무런 영향이 없는 걸 볼 수 있다. 따라서, Sprite Renderer의 Flip 기능을 이용할 땐 위와 같은 상황이라면 주의해서 사용할 필요가 있어 보인다.
2. Transform 컴포넌트의 Scale 값 부호 바꾸기
게임 오브젝트는 트랜스폼(Transform) 컴포넌트를 기본적으로 가지고 있다. 트랜스폼에서 게임 오브젝트의 크기 정보를 담당하는 Scale 값의 부호를 바꾸는 걸 통해서 반전을 구현할 수 있다. 2D Capsule 게임 오브젝트를 생성하고, 좌우를 구분할 수 있게 하위 자식으로 2D Circle 게임 오브젝트를 달아놨다.
스크립트(script) 상에서 접근하여 수정하고자 한다면, 다음과 같이 써주면 될 것이다.
private float scaleX = transform.localSacle.x;
private float scaleX = transform.localSacle.y;
private float scaleX = transform.localSacle.z;
// 좌우 반전일 경우
transform.localScale = new Vector3(-scaleX, scaleX, scaleX);
// 상하 반전일 경우
transform.localScale = new Vector3(scaleX, -scaleX, scaleX);
2D 게임 캐릭터를 좌우로 움직이다 보면, 당연히 진행 방향으로 게임 캐릭터가 바라보게 만들어야 한다. 그런 경우에 사용하면 유용할 듯 하다.
'Game Development > Unity' 카테고리의 다른 글
[Unity] New Input System #1 | 세팅하기 (15) | 2022.01.26 |
---|---|
[Unity] OnTriggerStay() 함수: 오브젝트의 변화가 감지되지 않으면 더 이상 호출되지 현상 해결법 (6) | 2022.01.19 |
[Unity] Universal RP를 이용한 2D 빛(Light) 처리 (1) | 2022.01.18 |
[Unity] 최적화를 위한 게임 오브젝트 태그(Tag) 비교 방법 (0) | 2022.01.17 |
[Unity, C#] 구조체(struct)는 왜 new 문법을 지원할까? (2) | 2022.01.13 |