본문 바로가기

Unity

[Unity] Quaternion.AngleAxis()를 이용한 플레이어가 마우스로 바라보면서 따라가는 법

728x90

Quaternion.AngleAxis()는 축 axis 주위를 angle만큼 회전한 rotation을 생성한다.

 

변수 선언 내용 Awake 함수 코드 Update 함수 코드

moveSpeed = 이동속도를 저장한 변수이다.

turnSpeed = 회전하는 속도를 저장한 변수이다.

 

Awake() 함수를 통해 rigid를 초기화해준다.

Update() OnRotateAndMove() 함수를 실행시켜준다.

 

OnRotateAndMove 함수 코드

mousePos에 마우스 좌표를 넣어준다. 그리고 target에 mousePos - transform.position을 해서 target 방향을 얻는다.

그리고 Mathf.Atan2를 이용하여 tan(y/x) 각도를 구하는데 이 값은 라디안이기 때문에 Mathf.Rad2Deg를 사용하여 각도로 변경해준다. 그리고 -90도 또는 +270도를 해준다.(이렇게 안 해주면 정상적으로 작동이 되지 않는다. 왜 그런지는 아직 잘 모르겠다.) 그리고 rigid.velocity를 target의 정규화 벡터에 moveSpeed를 곱하고 Time.deltaTime을 곱하여 속도를 정해준다.

 

그리고 플레이어의 회전을 Quaternion.AngleAxis(angle, Vector3.forward * turnSpeed)를 해주어서 회전시켜준다.

 

결과 화면

728x90