▣ 이번장에서는 2D 오브젝트 방향을 조정하는 코드를 작성해보겠습니다.
▣ 김선민 벨로그를 참고하여 코드를 작성했습니다.
감사합니다.
▣ 우선 기본적으로 원으로 플레이어 오브젝트를 만들어주시고,
그리고 방향을 구분하기 위해 적에 오브젝트를 눈이 있는 캐릭터로 지정했습니다.
그리고 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로 넣어주시면 됩니다.
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 - [CameraShake, 카메라 쉐이크효과] (0) | 2022.06.09 |
---|---|
유니티 - [마우스커서 숨기기, 마우스커서 고정] (2) | 2022.04.23 |
유니티 - [rotation, LookRotation, Quaternion, Slerp] (2) | 2022.04.07 |
유니티 - [폭발효과, OverlapSphere, AddExplosionForce] (0) | 2022.03.28 |
유니티 - [Destroy, ParticleSystem, GetComponentInChildren] (0) | 2022.03.27 |
댓글