728x90
Quaternion.AngleAxis()는 축 axis 주위를 angle만큼 회전한 rotation을 생성한다.
moveSpeed = 이동속도를 저장한 변수이다.
turnSpeed = 회전하는 속도를 저장한 변수이다.
Awake() 함수를 통해 rigid를 초기화해준다.
Update() 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
'Unity' 카테고리의 다른 글
[Unity] 무한 배경 만들기: Background Scrolling (2) | 2020.04.29 |
---|---|
[Unity] RotateAround()를 이용한 빙글빙글 돌기 (0) | 2020.04.12 |
[Unity] A* 알고리즘 2d 길찾기 설명 (0) | 2020.04.07 |
[Unity] Camera를 이용한 게임 화면 크기 구하기 (0) | 2020.04.06 |
[Unity] TouchPhase를 사용한 모바일 터치를 사용한 플레이어 움직이기 (0) | 2020.04.05 |