본문 바로가기

Unity/제로부터 구현

1인칭 시점 구현하기 + 이동

728x90

오늘의 구현

1인칭 시점 만들기

 

  • 마우스 X,Y를 Input.GetAxisRaw로 가져와 델타타임과 마우스 민감도를 곱해줍니다.
  • 위아래를 바라보게 하기 위해선 x 축으로 회전 시켜야 하고, 오른쪽 왼쪽으로 회전시키기 위해서는 y축을 움직여 줘야합니다. y축기준으로 회전시킬때 음의 방향이 위를 바라봅니다. 위아래 90도를 넘겨 카메라가 뒤집히는 경우를 방지하기 위해 클램핑 해줍니다.
  • 마우스의 움직에 따라 메인카메라의 로테이션을 바꿔줍니다.
  • 양옆으로 움직일때 플레이어의 방향도 바꿔주야 하기 때문에 플레이어의 로테이션 y축만 업데이트 해줍니다.
  • 플레이어가 내가 원하는 방향으로 움직이게 하기위해 빈 게임오브젝트(body)를 플레이어안에 생성해 이를 이용해 이동 방향을 정해줍니다.
  • rigibody.AddForce 로 플레이어를 움직여 줍니다.
        float mouseX = Input.GetAxisRaw("Mouse X") * Time.deltaTime * sensX;
        float mouseY = Input.GetAxisRaw("Mouse Y") * Time.deltaTime * sensY;
        rotationY += mouseX;
        rotationX -= mouseY;

        rotationX = Mathf.Clamp(rotationX, -90, 90);
        mainCamera.transform.rotation = Quaternion.Euler(rotationX, rotationY, 0);
        transform.rotation = Quaternion.Euler(0, rotationY, 0);

        Vector3 dir = body.forward * Input.GetAxisRaw("Vertical") + body.right * Input.GetAxisRaw("Horizontal");
        
        player.playerRg.AddForce(dir.normalized * moveSpeed * 10f, ForceMode.Force);

 

728x90