[Unity3d] 케릭터 이동과 카메라도 같이 이동 및 회전
출처: 바로가기
케릭터 이동
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= Time.fixedDeltaTime;
moveDirection *= mSpeed;
moveDirection += transform.position;
transform.position = moveDirection;
케릭터가 이동할 때 카메라도 같이 이동하게 하려면
가장 간단한 방법!
케릭터 자식으로 카메라는 넣는다. !
그 후 카메라는 케릭터의 이동과 방향에 맞게 설정해주면 된다.
Transform mCamera;
mCamera = transform.FindChild("Camera");
mCamera.transform.LookAt( transform.position );
mCamera.transform.RotateAround( transform.position, Vector3.up, transform.rotation.z );
Vector3 prePosition = moveDirection;
Quaternion toRotation = transform.rotation * Quaternion.LookRotation( prePosition ) ;
transform.rotation = Quaternion.Slerp( transform.rotation,
toRotation, Time.fixedDeltaTime );
현재 회전벡터(transform.rotaion)와 이동할 방향 (prePosition)의 회전 벡터를 곱함으로써
현재의 회전에서 이동해야할 회전방향을 구할 수 있다.
toRotation을 바로 회전벡터로 지정하면 케릭터는 회전이 된다.
하지만 너무 빠르다! 미치도록..뱅글뱅글 돌아버린다.
그렇기 때문에 현재 회전과 이동할 회전의 사이값으로 조금씩만 돌기 위하여 구 보간(Quaternion.Slerp)을 한다.