[Unity]유니티 입문 - Cameras

·2022년 12월 19일
0

Unity

목록 보기
5/8
post-thumbnail

케이디님의 유니티 입문 강좌를 듣고 정리한 내용입니다.

Cameras

Cameras는 플레이어에게 보여줄 화면을 만들어 내는 컴포넌트이다.

Properties

  • Transform : 카메라의 위치, 회전, 크기 등을 자세하게 조정.

  • Clear Flags : 화면의 어떤 부분을 클리어할지 결정(=여백을 정한다).

    • Skybox : 스카이박스를 사용합 니다. 스카이박스는 정육면체로 이루어져 있으며 사용자가 만들 수 있다.
    • Solid Color : Background의 색으로 여백을 정한다.
    • Depth only : 여백을 투명처리 한다.
    • Don't Clear : 여백을 투명처리하지만 이전의 프레임은 지우지 않는다(= 잔상이 남는다). 최적화가 잘 된다.
  • Culling Mask : 카메라가 렌더링할 오브젝트의 레이어를 정한다. 게임뷰에 보여지고 싶은 레이어들만 선택하면 그 레이어를 가진 오브젝트는 Scene뷰에서는 보이지만 게임뷰에서는 보이지 않는다.

  • Projection : 카메라 원근감 변경.

    • Perspective : 원근감 적용. 보통 3차원에서 사용.

    • Orthographic : 원근감 없이 오브젝트를 균일하게 렌더링. 보통 2차원에서 사용.

  • Field Of View (when Perspective is selected) : 시야각을 설정.

  • Physical Camera : 실제 카메라처럼 설정. 사용할 일이 별로 없음.

  • Clipping Planes : 특정한 거리에 있는 오브젝트만 보이고 그 거리에 해당하지 않으면 잘라낸다.

    • Near : 잘라낼 최소한의 거리 설정.

    • Far : 잘라낼 최대 거리 설정.

  • Viewport Rect : 카메라가 화면에 그려질 위치를 설정한다. 찍고 있는 시점을 옮길 때 사용

field of view와 viewport rect를 조작해 미니맵처럼 만들 수 있다.

  • Depth : 카메라의 우선순위 설정. 값이 큰 카메라는 값이 작은 카메라 위에 드로우 된다.

  • Rendering Path : 카메라가 사용할 렌더링 메서드를 정의.

  • OcclusionCulling : 카메라가 오브젝트를 보고 있지 않을때 오브젝트를 보이지 않게 한다(오브젝트 렌더링 무효화).

  • HDR : 밝은 것을 더 밝게 보여주고 어두운것을 더 어둡게 보여준다.

  • MSAA : 계단 현상을 제거. 깨진 픽셀을 원상 복기 해줌.

  • Allow Dynamic Resolution : gpu에 부담을 줄여줌. 성능에 따라서 해상도가 작아진다.

  • Target Display : 카메라가 지정된 디스플레이로 렌더링 되도록 설정. 최대 수 8개.

Code

go_Target을 따라 일정 거리만큼 유지하며 따라가는 카메라를 설정하는 코드이다. 카메라에 이 스크립트를 추가하고 serializeField 변수를 설정하면 된다.


public class Test6 : MonoBehaviour
{
    [SerializeField]
    private GameObject go_Target;

    [SerializeField]
    private float speed;

    private Vector3 difValue;

    private void Start()
    {
        difValue = transform.position - go_Target.transform.position;
        //위치가 음수일 경우를 위해 절댓값으로 넣어주기
        difValue = new Vector3(Mathf.Abs(difValue.x), Mathf.Abs(difValue.y), Mathf.Abs(difValue.z));
    }
    void Update()
    {
        //부드러운 움직임을 위하여 보간
        this.transform.position = Vector3.Lerp(this.transform.position, go_Target.transform.position + difValue, speed);
    }
}
 


하지만... 플레이하니 카메라의 transform이 다 바뀌고 타겟을 움직이니 따라 움직였다. 왜 카메라의 transform이 바뀌는지 모르겠다. 추후에 다시 포스팅하기로...ㅜ
profile
중요한 건 꺾여도 다시 일어서는 마음

0개의 댓글