[Unity] 2D 게임 오브젝트가 바라보는 방향 전환하기

2022. 1. 13. 21:28Game Development/Unity

 

 

 

1. Sprite Renderer의 Flip 속성 이용

 

Sprite Renderer

 

Flip 속성을 통해 X축, Y축, 혹은 둘 다 반전에 대한 축으로 설정할 수 있지만, 렌더링만 영향을 받는 단점이 있다.

 

다음은 2D Capsule 게임 오브젝트를 하나 생성하고, 하위 자식으로 2D Circle 게임 오브젝트를 생성해서 넣어놨다. 캡슐은 상하좌우 모두 반전에 대해 대칭이므로 구분을 할 수 있게, 다른 모양으로 Sprite를 바꿔놨다.

 

Flip 적용 전
X축에 대한 Flip 적용
Y축에 대한 Flip 적용

 

유니티를 통해 위와 같이 실험을 진행했다. 보면 알겠지만, 2D Capsule 게임 오브젝트의 렌더링 부분만 영향을 미친다. 하위 자식으로 생성했던 2D Circle 게임 오브젝트는 아무런 영향이 없는 걸 볼 수 있다. 따라서, Sprite Renderer의 Flip 기능을 이용할 땐 위와 같은 상황이라면 주의해서 사용할 필요가 있어 보인다.

 

 

2. Transform 컴포넌트의 Scale 값 부호 바꾸기

 

게임 오브젝트는 트랜스폼(Transform) 컴포넌트를 기본적으로 가지고 있다. 트랜스폼에서 게임 오브젝트의 크기 정보를 담당하는 Scale 값의 부호를 바꾸는 걸 통해서 반전을 구현할 수 있다. 2D Capsule 게임 오브젝트를 생성하고, 좌우를 구분할 수 있게 하위 자식으로 2D Circle 게임 오브젝트를 달아놨다.

 

(좌우 반전, X축) Scale 부호 변경 전
(좌우 반전, X축) Scale 부호 변경 후
(상하 반전, Y축) Scale 부호 변경 전
(상하 반전, Y축) Scale 부호 변경 후

 

 

스크립트(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 게임 캐릭터를 좌우로 움직이다 보면, 당연히 진행 방향으로 게임 캐릭터가 바라보게 만들어야 한다. 그런 경우에 사용하면 유용할 듯 하다.

 

 

 

728x90
반응형