본문 바로가기
[ Unity ]/- 유니티 실습

유니티 - [회전과 방향 전환]

by MRG 2022. 4. 20.
728x90
반응형

▣ 이번장에서는 2D 오브젝트 방향을 조정하는 코드를 작성해보겠습니다.

 

▣ 김선민 벨로그를 참고하여 코드를 작성했습니다.

감사합니다.

출처 : https://velog.io/@sonohoshi/7.-Mathf.Atan2% EC%97%90-%EB% 8C%80% ED%95% B4-%EC%95% 8C% EC%95%84% EB% B3% B4% EC% 9E%90

 

7. Mathf.Atan2에 대해 알아보자

Unity에서 제공하는 static class, Mathf 에서 제공하는 static method Atan2를 설명한다.

velog.io

 

728x90

 

 

▣ 우선 기본적으로 원으로 플레이어 오브젝트를 만들어주시고, 

그리고 방향을 구분하기 위해 적에 오브젝트를 눈이 있는 캐릭터로 지정했습니다.

그리고 Enemy오브젝트에 스크립트 Enemy Manager를 만들어서 넣어주세요.

 

▣ 먼저 player와 Enemy 오브젝트에 거리를 구하기 위해 public 게임 오브젝트를 가져오는 코드를 작성해주시고

Vector3 dir에 바라보는 방향을 구하기 위한 공식을 작성합니다.

Debug.Log(dir)를 이용해서 값이 어떻게 나오는지 확인합니다.

 

▣ 오른쪽 왼쪽에 player오브젝트를 직접 옮겨보면 이렇게 방향 값이 나오는 걸 확인할 수 있습니다.

 

 

▣ 그리고 회전 값 도를 구하기 위해 Mathf.Atan2() 함수와 Mathf.Rad2 Deg;를 사용했습니다.

위에 출처에 자세한 설명 나와 있으니 참고해주세요.

 

▣ 쉽게 요약해서 Atan2() 함수는 탄젠트를 이용해 라디안 값으로 반환해주는 함수이고

Rad2 Deg는 그 라디안 값을 도로 바꾸기 위해 곱하는 육십분법이라고 생각하시면 됩니다. 

Debug.Log(angle) 디버그를 이용하여 직접 값을 출력해보겠습니다.

 

 

▣ 오른쪽 왼쪽으로 player오브젝트를 움직였을 때 값이 다른 걸 확인할 수 있습니다.

다시 말해 dir.y dir.x 값을 통해서 각도를 구했습니다.

 

▣ 그리고 자신에 rotation = 값에 Quaternion.AngleAxis() 함수를 이용하여 

해당 각도로 돌릴 것인지 넣어 줍니다.

우리는 회전 값에 y를 변경하기 때문에

Vector3.up(0,1,0)을 넣었습니다. 

저장을 하고 

 

 

▣ 이렇게 대입을 해보면  회전 값에 y값이 바뀌는 걸 확인할 수 있습니다. 

만약 x값을 바꾸러면 Vector3.right로 

z값을 바꾸러면 Vector3.forward로 넣어주시면 됩니다.

728x90
반응형

댓글