카메라를 다루는데에는 여러 방법이 있는데 간단하게 해볼 수 있는 카메라의 활용을 해보겠습니다.
1인칭
가장 간단한 방법으로 Camera 오브젝트를 대상 게임 오브젝트의 자식으로 만들어주면 부모 오브젝트가 움직일때 따라 움직이게 된다.
3인칭과 Follow Camera
Follow Camera
using UnityEngine;
public class SmoothFollow : MonoBehaviour
{
// The target we are following
[SerializeField]
private Transform target;
// The distance in the x-z plane to the target
[SerializeField]
private float distance = 10.0f;
// the height we want the camera to be above the target
[SerializeField]
private float height = 5.0f;
[SerializeField]
private float rotationDamping;
[SerializeField]
private float heightDamping;
// Use this for initialization
void Start() { }
// Update is called once per frame
void LateUpdate()
{
// Early out if we don't have a target
if (!target)
return;
// Calculate the current rotation angles
var wantedRotationAngle = target.eulerAngles.y;
var wantedHeight = target.position.y + height;
var currentRotationAngle = transform.eulerAngles.y;
var currentHeight = transform.position.y;
// Damp the rotation around the y-axis
currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
// Damp the height
currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// Convert the angle into a rotation
var currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);
// Set the position of the camera on the x-z plane to:
// distance meters behind the target
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
// Set the height of the camera
transform.position = new Vector3(transform.position.x ,currentHeight , transform.position.z);
// Always look at the target
transform.LookAt(target);
}
}
위 스크립트는 Unity Standard Assets에서 제공하는 스크립트이다.
따라오는 카메라를 사용할 수 있고 아래의 설정으로 세팅도 다르게 할 수 있다.
Target에 원하는 대상을 주고 직접 실행해보며 Distance와 Height 등 값을 바꿔주면 된다.
백미러
백미러 효과를 주는 카메라를 만드는 것도 간단하다.
BackCamera라는 카메라를 만들어준 다음, 프로젝트 뷰에서 우클릭하여 [Create] - [Render texture]하여 새로운 렌더텍스쳐를 만든다. 이것을 mBackMirror라는 매터리얼의 알베도(Albedo)에 넣어주고 BackCamera의 Target Texture에 드래그하여 넣어주면 된다. 그리고 BackMirror라는 Quad에 mBackMirror 매터리얼을 넣어주면 백미러와 같은 카메라효과를 낼 수 있다.
MultiCamera
감시카메라처럼 여러각도에서 여러카메라로 지켜볼 수 있는 방법이다.
여러 카메라 오브젝트를 생성 후, 카메라 컴포넌트에서 Viewport Rect의 X, Y 값을 바꾸면 카메라의 위치가 바뀌고
W, H를 바꾸면 카메라의 크기가 바뀐다
'개발 > Unity' 카테고리의 다른 글
[Unity] 레이캐스트, 레이저 충돌 [Raycast] (0) | 2023.02.27 |
---|---|
[Unity] 프리팹의 복제와 재사용, Instantiate [Prefab, Instantiate] (0) | 2023.02.24 |
[Unity] 오디오 사운드 [Audio Sound] (0) | 2023.02.23 |
[Unity] 캐릭터 컨트롤러 [CharacterController] (0) | 2023.02.22 |
[Unity] 충돌이벤트와 트리거이벤트, 키네마틱 [Collision, Trigger, Kinematic] (1) | 2023.02.22 |