Unity Camera
Camera
- 3D로 게임을 만들더라도, 우리 스크린은 2D이기 때문에 변환 필요 >> 카메라로 찍은 것을 보여줌(View)
- 카메라 오브젝트의 전방 축(Z)이 방향을, 수직 축(Y)이 스크린의 위 아래를 결정함.
- 원근 모드 (Perspective)와 직교 모드(Orthograpic) 방식으로 카메라를 투영 가능
- 스카이박스(Skybox)로 , 카메라를 감싸 배경 표현 가능
구성요소
- Transform : 카메라의 위치와 방향을 설정
- Clear Flags : 화면의 배경 처리를 설정
-Skybox : 스카이박스를 사용해 배경을 렌더링
-Solid Color : 단색 배경
-Depth Only : 배경을 렌더링하지 않고, 이전 카메라의 내용을 유지 // 여백을 투명하게 처리, 버퍼를 초기화해 기존 내용을 모두 제거
-Dont' Clear : 모든 렌더링을 유지// 버퍼를 초기화하지 않고 이전 내용에 새로운 화면을 그림 - Culling Mask : 특정 레이어의 객체만 렌더링
- Field of View (FOV) : 카메라의시야각을 조절
- Clipping Planes : 렌더링할 최소/최대 거리 설정, 성능과 관련되어 있음, 먼 곳의 폴리를 낮추는 기법도 존
- Depth : 카메라의 렌더링 우선순위 // 여러대 카메라 사용 시, 그리는 순서 -100~ 이며 높을수록 나중에 그림
카메라 사용
1. 다중 카메라 설정
유니티는 하나의 장면에 여러 카메라를 배치할 수 있음, 각 카메라는 특정 목적을 위해 사용되며
카메라로 화면 전환을 하거나 Clear Flags를 사용해 다른 화면에 있는 물체를 겹치게 그리거나 할 수 있다.
- Camera.mian.cullingMask = LayerMask.GetMask() 특정 객체만 렌더링 할 수 있음
- Camera.main.rect = new Rect() 화면의 일부에 다른 카메라의 뷰를 표시할 수 있음
2. 카메라 전환
카메라를 껐다 키면서 빠른 전환을 하거나, Lerp 혹은 SmoothDamp를 사용해 부드러운 전환을 구현 가능
- camer1.enabled = true/false; : 카메라를 활성화/비활성화
- Camera.main.transform.position/rotation = Vector3/Quaterninon.Lerp : 부드러운 위치 전
- Cinemachine 활용 : 패키지관리자에서 설치 후 사용 / 나중에 추가 정보 알아볼 것Y)이 스크린의 위 아래를 결정함.
- 원근 모드 (Perspective)와 직교 모드(Orthograpic) 방식으로 카메라를 투영 가능
- 
- 스카이박스(Skybox)로 , 카메라를 감싸 배경 표현 가능
- 구성요소
Transform : 카메라의 위치와 방향을 설정
Clear Flags : 화면의 배경 처리를 설정
-Skybox : 스카이박스를 사용해 배경을 렌더링
-Solid Color : 단색 배경
-Depth Only : 배경을 렌더링하지 않고, 이전 카메라의 내용을 유지 // 여백을 투명하게 처리, 버퍼를 초기화해 기존 내용을 모두 제거
-Dont' Clear : 모든 렌더링을 유지// 버퍼를 초기화하지 않고 이전 내용에 새로운 화면을 그림
Culling Mask : 특정 레이어의 객체만 렌더링
Field of View (FOV) : 카메라의시야각을 조절
Clipping Planes : 렌더링할 최소/최대 거리 설정
Depth : 카메라의 렌더링 우선순위 // 여러대 카메라 사용 시, 그리는 순서 -100~ 이며 높을수록 나중에 그림
카메라 사용
1. 다중 카메라 설정
유니티는 하나의 장면에 여러 카메라를 배치할 수 있음, 각 카메라는 특정 목적을 위해 사용되며
카메라로 화면 전환을 하거나 Clear Flags를 사용해 다른 화면에 있는 물체를 겹치게 그리거나 할 수 있다.
Camera.mian.cullingMask = LayerMask.GetMask() 특정 객체만 렌더링 할 수 있음
Camera.main.rect = new Rect() 화면의 일부에 다른 카메라의 뷰를 표시할 수 있음
2. 카메라 전환
카메라를 껐다 키면서 빠른 전환을 하거나, Lerp 혹은 SmoothDamp를 사용해 부드러운 전환을 구현 가능
camer1.enabled = true/false; : 카메라를 활성화/비활성화
Camera.main.transform.position/rotation = Vector3/Quaterninon.Lerp : 부드러운 위치 전
Cinemachine 활용 : 패키지관리자에서 설치 후 사용 / 나중에 추가 정보 알아볼 것
3. 카메라 움직임
카메라는 프로그래밍으로 이동시키거나, 특정 물체를 추적하거나, 회전시킬 수 있다.
- transform.LooAt(target) : 특정 타겟을 바라보도록 만듬
- 추적 코드 (자주 쓰이는)
public Transform target; // 추적할 대상
public float smoothSpeed = 0.125f;
public Vector3 offset; // 카메라와 대상의 거리
void LateUpdate() {
Vector3 desiredPosition = target.position + offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
transform.position = smoothedPosition;
transform.LookAt(target); // 대상을 바라보게 설정
}
( 보니까 저번에 했던 것처럼 카메라 오프셋을 설정해서 따라간다.)
4. 카메라 효과
- 카메라 흔들림(Shake Effect)
public IEnumerator CameraShake(float duration, float magnitude) {
Vector3 originalPosition = transform.localPosition;
float elapsed = 0.0f;
while (elapsed < duration) {
float x = Random.Range(-1f, 1f) * magnitude;
float y = Random.Range(-1f, 1f) * magnitude;
transform.localPosition = originalPosition + new Vector3(x, y, 0);
elapsed += Time.deltaTime;
yield return null;
}
transform.localPosition = originalPosition;
}
이것도 저번에 했었던 인벤토리의 랜덤 흔들림과 비슷 !
- Camera.main.fieldOfView 를 Lerp로 변경해서 시야각 변경 > 줌 인/아웃 구현
- Camera.main.transform.forwoard * zoomSpeed 로 카메라의 위치를 변경해서 줌 인/아웃 구현 가능
- Post Processing : 패키지 매니저에서 설치 후, Bloom,Depth of Field, Color Grading의 효과 추가 가능
https://www.youtube.com/watch?v=zRfq2rZa9Ho
https://blog.naver.com/winterwolfs/10180231956
[Unity] Camera 카메라
= Camera 카메라 3차원 정보를 2차원으로 변환해서 화면에 출력을 ...
blog.naver.com
참조 : https://docs.unity3d.com/kr/2018.4/Manual/CamerasOverview.html
카메라 - Unity 매뉴얼
Unity에서는 3차원 공간에서 오브젝트를 정렬하고 움직이는 것으로 씬을 생성합니다. 그러나 뷰어의 스크린은 2차원 평면이기 때문에 뷰를 캡처한 뒤 디스플레이를 위해 “평면화” 시킬 방법이
docs.unity3d.com
https://docs.unity3d.com/kr/2022.3/Manual/class-Camera.html
Camera 컴포넌트 - Unity 매뉴얼
카메라 는 월드를 캡처하여 플레이어에게 보여주는 장치입니다. 카메라를 커스터마이즈 및 조정하여 게임의 프레젠테이션을 독창적으로 만들 수 있습니다. 하나의 씬에 카메라를 원하는 만큼
docs.unity3d.com