관리 메뉴

도드넷

게임 개발 일지#11 - 유니티 마우스 스크롤 마우스 화면 카메라 움직임 시스템 본문

창고/게임 제작 [시즌2]

게임 개발 일지#11 - 유니티 마우스 스크롤 마우스 화면 카메라 움직임 시스템

도드! 2016. 10. 15. 16:22
반응형




게임 개발 일지#11

- 유니티 마우스 화면 카메라 움직임 시스템


#1 유니티 마우스 스크롤시 카메라 화면 확대 줌 하는 방법


        if (Input.GetAxis("Mouse ScrollWheel") > 0f) // forward
        {
            Debug.Log("Scroll Push");
            Current_Cam_Zoom_Speed = 0.10f;
        }
        else if (Input.GetAxis("Mouse ScrollWheel") < 0f) // backwards
        {
            Debug.Log("Scroll Drag");
            Current_Cam_Zoom_Speed = -0.10f;
        }

        if (Current_Cam_Zoom_Speed != 0)
        {
            Current_Cam_Zoom_Speed = Current_Cam_Zoom_Speed * 0.90f;

            if (Mathf.Abs(Current_Cam_Zoom_Speed) < 0.001)
            {
                Current_Cam_Zoom_Speed = 0;
            }
        }

        Current_Cam_Size = Current_Cam_Size - Current_Cam_Zoom_Speed;

        // 제한걸기
        Current_Cam_Size = Mathf.Clamp(Current_Cam_Size, MinSize, MaxSize);

        // 카메라 크기 설정
        Camera.main.orthographicSize = Current_Cam_Size;


Input.GetAxis("Mouse ScrollWheel") > 0f 스크롤 (PUSH)
Input.GetAxis("Mouse ScrollWheel") < 0f 스크롤 다운(DRAG)


카메라 줌할때 약간 속도라고 해야하나 그런게 존재하는데 (롤 참고)


그거 구현하려면 줌 순간 속도를 주고 1/60초 마다 10% 씩 감소시킴.


그런데 % 감소는 절대로 0에 도달할수없으므로 0.001 이하로 충분히 느려지면 0 멈춰지게 만듬.


그리고 Mathf.Clamp 는 어떤 수를 범위안에서 제한하는 역할을 함. 만약 해당수가 최대값을 초과하면 최대값으로 fix되고 최솟값 아래로 떨어지면 최솟값으로 fix됨. 그사이에 적당한 수면 유지됨.



#2 카메라 캐릭터에 고정하는 방법


카메라에 고정할 게임 오브젝트 불러와서 게임오브젝트 위치를 카메라 위치에 대입시키면 됨.

너무 간단하고 미완이라 코드 안올림.


#3 유니티 화면 경계도달시 카메라 이동하는 방법


        ScreenHeight = Screen.height;
        ScreenWidth = Screen.width; 


...


        if (!Fixed_To_Char && Input.mousePosition.x > ScreenWidth - boundary)
        {
            Debug.Log("▶");
            Vector3 newvec;
            newvec = This_Trasnform.position;
            newvec.x = newvec.x + XY_Speed;
            This_Trasnform.position = newvec;
        }

        if (!Fixed_To_Char && Input.mousePosition.x < 0 + boundary)
        {
            Debug.Log("◀");
            Vector3 newvec;
            newvec = This_Trasnform.position;
            newvec.x = newvec.x - XY_Speed;
            This_Trasnform.position = newvec;
        }


마우스가 화면 끝에 도달하면 카메라를 이동시키는 탑다운 게임에서 흔히 볼수있는 카메라 시스템

화면의 너비와 높이 구해서 마우스 위치가 바운더리 먹인 위치를 초과하면 설정한 스피드만큼 화면의 위치를 조정함.


내 게임은 탑다운이지만 횡스크롤이라 X 이동만 하는상태.







반응형
Comments