Unity

카메라 이동 및 각도변경

Dean83 2023. 10. 18. 21:30

 

  1. 키보드를 이용한 카메라 이동 및 마우스를 이용한 회전
    • 마우스 우클릭 후 드래그를 통해 해당 방향으로 카메라가 회전하며,
    • WASD를 이용하여 카메라가 줌인, 줌아웃 및 양 옆으로 이동함.
      • 카메라가 회전을 하였어도, 회전한 기준으로 줌인, 줌아웃, 이동 동작을 알맞게 수행함
void Update()
    {
        float currentPositionX = Camera.main.transform.position.x;
        float currentPositionY = Camera.main.transform.position.y;
        float currentPositionZ = Camera.main.transform.position.z;

        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Camera.main.transform.Translate(h, 0, 0);
        Camera.main.transform.Translate(0, 0, v);

        if (Input.GetKey(KeyCode.Q))
        {
            Camera.main.transform.position = new Vector3(currentPositionX, currentPositionY + 1f, currentPositionZ);
        }

        if (Input.GetKey(KeyCode.E))
        {
            Camera.main.transform.position = new Vector3(currentPositionX, currentPositionY - 1f, currentPositionZ);
        }

        if (Input.GetMouseButtonUp(0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.transform == null)
                    return;

            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            isNeedToCameraRotation = true;
        }

        if (Input.GetMouseButtonUp(1))
        {
            isNeedToCameraRotation = false;
        }

        if (isNeedToCameraRotation)
        {
            cameraMove.x += Input.GetAxis("Mouse X") * 1f;
            cameraMove.y += Input.GetAxis("Mouse Y") * 1f;

            Camera.main.transform.localRotation = Quaternion.Euler(-cameraMove.y, cameraMove.x, 0);
        }
    }