• 티스토리 홈
  • 프로필사진
    SiJun-Park
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
SiJun-Park
  • 프로필사진
    SiJun-Park
    • 분류 전체보기 (121)
      • Unity (80)
        • RPG Project (39)
        • FPS Project (30)
        • 기타 - 개발 (11)
      • 개발 (35)
        • 임베디드 소프트웨어 (7)
        • 컴파일러 (6)
        • 기계학습 (8)
        • 보안 (8)
        • 그래픽스 (2)
        • 그 외 (4)
      • 코딩문제 (5)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • RPG Project - 33 [ Camera Rotation 수정 ]
        2024년 11월 18일
        • SiJun-Park
        • 작성자
        • 2024.11.18.:53

        현재 카메라 Rotation을 구현한 것을 보면 마우스 클릭시 캐릭터 앞으로 가거나 회전이 잘 안되는 오류가 있었습니다.

         

            public void Rotation(Transform pos)
            {
                x_rotation += Input.GetAxisRaw("Mouse X") * _RotationSensitivity * Time.deltaTime;
                y_rotation += Input.GetAxisRaw("Mouse Y") * _RotationSensitivity * Time.deltaTime;
                y_rotation = Mathf.Clamp(y_rotation, _minRotation, _maxRotation);
                transform.localEulerAngles = new Vector3(-y_rotation, x_rotation, 0);
            }

        원래 쓰던 코드인데 안쓰는 파라메타도 선언이 되어있고 

        초기 값을 설정을 안해주니 카메라가 멋대로 움직이는 것이 문제였습니다.

         

         

        여기서 저가 설정을 해주고 싶었던 것은

         

        마우스 우측을 누른 상태일때만 회전이 가능하게 하고, 그게 아니면 캐릭터의 방향에 따라서만 카메라가 자동으로 움직여지게 하고 싶었습니다.

         

            private void Start()
            {
                x_rotation = transform.localEulerAngles.y;
                y_rotation = transform.localEulerAngles.x;
                z_rotation = transform.localEulerAngles.z;
            }

         

        그래서 가장 먼저 카메라의 Rotation 초기값을 설정 해주었습니다.

            public void Rotation()
            {
                x_rotation += Input.GetAxisRaw("Mouse X") * _RotationSensitivity * Time.deltaTime;
                y_rotation -= Input.GetAxisRaw("Mouse Y") * _RotationSensitivity * Time.deltaTime;
                y_rotation = Mathf.Clamp(y_rotation, _minRotation, _maxRotation);
                transform.localEulerAngles = new Vector3(y_rotation, x_rotation, z_rotation);
            }

        그래서 그걸 토대로 더하거나 빼줍니다

         

        이때 이전과 다르게 y_rotation을 +가 아닌 -를 해주고 Vector3에선 -대신에 다시 +를 넣어준 이유가 있습니다.

         

        그 이유는 초기 값 때문에 그렇습니다.

         

        만약에 y 초기값이 28이라고 하고 원래 코드로 하였다면 -28이 되는 불상사가 일어납니다.

        그렇다고 y rotation만 -로 바꾼다면 마우스를 위로 올릴때 아래를 보게되고 아래를 내릴때 위를 보게 됩니다.

         

        그래서 y rotation에 줄때부터 -를 주고 Vector은 양수로 해서 이 문제를 해결하였습니다.

         

            public void Auto_Rotation()
            {
                x_rotation += Input.GetAxisRaw("Horizontal") * _RotationSensitivity * Time.deltaTime;
                transform.localEulerAngles = new Vector3(y_rotation, x_rotation, z_rotation);
            }

         

        그 다음으로는 캐릭터의 움직임에 따라 카메라를 이동하는 것인데 이것은 간단하게 x_rotation만 더해주었습니다.

            void Update() {
                if (CheckMove())
                {
                    if(Input.GetButton("Fire2"))camerarotation.Rotation();
                    else camerarotation.Auto_Rotation();
                    cameraZoom.Zoom(_player);
                }
            }

         

        마지막으로 CameraControl쪽에서는 우측 마우스를 누르고 있다면 회전이 되게하고 그게 아니라면 자동으로 방향에 따라 회전이 되게 해줍니다.

         

        결과

        키보드로 움직이는 것은 속도를 조금 더 낮추어야 할 것 같습니다. 매우 빠르네요 

        'Unity > RPG Project' 카테고리의 다른 글

        RPG Project - 35 [ 방패 막기 ]  (0) 2024.11.22
        RPG Project - 34 [ Monster Drop Item ]  (0) 2024.11.21
        RPG Project - 32 [ NPC SHOP ]  (0) 2024.11.16
        RPG Project - 31 [ itemData 묶기]  (0) 2024.11.15
        RPG Project - 30 [ Description System - Auto Position]  (1) 2024.11.14
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바