ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity Oculus 카메라(시점) 움직이기
    개발/Unity 2020. 2. 13. 14:51

    VR 개발에서 카메라는 항상 헤드셋의 위치에 따라 움직이므로 위치를 조절하기 어렵고, 가능하더라도 멀미의 원인이 되므로 피하는 것이 좋다. 따라서 몰입을 위해 Camera 컴포넌트가 장착된 CenterEyeAnchorTransform이나 Field of View(시야각)은 변경할 수 없게 되어 있다.

    시점(눈 가운데)에 장착되어 있는 카메라를 사용하는 것이 기본

    따라서 충격으로 흔들리거나, 술에 취한 상태를 표현하거나 예술적인 효과를 내기 위해 카메라를 움직이고 싶을 때는 상위 오브젝트인 OVRCameraRig 또는 OVRPlayerController를 움직여야 한다.

    플레이어의 위치를 이동할 때는 OVRPlayerController을 움직일 수 있는데, 이 때는 ChacterController과 OVRPlayerController를 비활성화하는 것이 좋다. OVRCameraRig의 Transform.position은 헤드셋의 위치에 따라 계속 변화하므로 변경하기 어려워 이 방법을 사용하는 것이 좋다.

    게임오버 시 앞으로 90도 회전해 넘어지는 효과를 스크립트로 작성

     

    플레이어가 보는 방향을 변경하면서 트래킹을 유지하고 싶다면, OVRCameraRig의 Transform.rotation을 변경해야 한다.

     

    private Quaternion nextRotation = Quaternion.Euler(0, 0, 0);
        private float turningTime;
        private float timeUntilTurn = 0;
    
        void RandomCameraTurn()
        {
            if(timeUntilTurn <= 0)
            {
                turningTime = 1;
                float rotRange = 10;
    
                nextRotation = Quaternion.Euler(Random.Range(-rotRange, rotRange), Random.Range(-rotRange, rotRange), Random.Range(-rotRange, rotRange));
                timeUntilTurn = turningTime;
    
                return;
            }
     
            cameraRig.localRotation = Quaternion.Slerp(cameraRig.localRotation, nextRotation, (turningTime - timeUntilTurn) / turningTime);
            timeUntilTurn -= Time.deltaTime;
        }

    일정 시간마다 조금씩 다른 방향을 바라보게 해 어지럼증을 표현했다. 과도하게 사용하면 실제로 멀미를 일으키기 쉬우니 조심해야 한다.

Designed by Tistory.