케이디님의 유니티 입문 강좌를 듣고 정리한 내용입니다.
Cameras는 플레이어에게 보여줄 화면을 만들어 내는 컴포넌트이다.
Transform : 카메라의 위치, 회전, 크기 등을 자세하게 조정.
Clear Flags : 화면의 어떤 부분을 클리어할지 결정(=여백을 정한다).
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개.
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);
}
}