Unity 전체 링크
Cinemachine Tutorial
- (3) 마우스 스크롤로 FreeLook Camera Zoom in / out
- (4) FreeLook Camera 속성 및 설정 (Control FreeLook Camera Attributes and Settings by Script)
- (5) Blend List Camera로 카메라 전환하기
깃허브에서 코드 확인하기
CMFreelookSetting.cs를 수정한다.
프리룩 카메라의 속성을 아래와 같이 script로 제어할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class CMFreelookSetting : MonoBehaviour
{
CinemachineFreeLook freeLook;
void Awake()
{
CinemachineCore.GetInputAxis = clickControl;
}
void Start()
{
// Target 설정
freeLook = this.GetComponent<CinemachineFreeLook>();
freeLook.Follow = GameObject.Find("PlayerArmature").transform;
freeLook.LookAt = GameObject.Find("PlayerCameraRoot").transform;
// Lens 설정
freeLook.m_Lens.FieldOfView = 50;
freeLook.m_Lens.NearClipPlane = 0.2f;
freeLook.m_Lens.FarClipPlane = 4000;
freeLook.m_Lens.Dutch = 0;
freeLook.m_Lens.ModeOverride = LensSettings.OverrideModes.None;
// Axis Control 설정
freeLook.m_XAxis.Value = 0;
freeLook.m_XAxis.m_MaxSpeed = 300;
freeLook.m_XAxis.m_AccelTime = 0.1f;
// Rig 설정
CinemachineComposer composer
= freeLook.GetRig(1).GetCinemachineComponent<CinemachineComposer>();
composer.m_DeadZoneHeight = 0.3f;
composer.m_DeadZoneWidth = 0.5f;
}
public float clickControl(string axis)
{
if(Input.GetMouseButton(0))
return UnityEngine.Input.GetAxis(axis);
return 0;
}
}
Target 설정
freeLook = this.GetComponent<CinemachineFreeLook>();
freeLook.Follow = GameObject.Find("PlayerArmature").transform;
freeLook.LookAt = GameObject.Find("PlayerCameraRoot").transform;
Lens 설정
freeLook.m_Lens.FieldOfView = 50;
freeLook.m_Lens.NearClipPlane = 0.2f;
freeLook.m_Lens.FarClipPlane = 4000;
freeLook.m_Lens.Dutch = 0;
freeLook.m_Lens.ModeOverride = LensSettings.OverrideModes.None;
렌즈의 값에 대한 변경 사항은 아래와 같다.
Vertical FOV(Field of View)로 타겟과의 거리를 설정할 수 있다.
그리고 Near / Far Clip Plane으로 카메라가 나오는 거리를 설정할 수 있다.
Dutch는 화면을 Rotate하는 기울기를 설정한다.
Advanced에서 OverrideModes를 변경할 수 있다.
Axis Control 설정
freeLook.m_XAxis.Value = 0;
freeLook.m_XAxis.m_MaxSpeed = 300;
freeLook.m_XAxis.m_AccelTime = 0.1f;
FreeLook은 기본적으로 마우스 입력을 받는다.
마우스 입력에 대한 값, 속도, 가속, 감속, Invert 등을 설정할 수 있다.
FreeLook에는 기본적으로 Top / Middle / Buttom을 제공한다.
FreeLook 카메라의 경우 Body 속성이 Orbital Transposer로 고정된다.
그리고 Aim을 누르면 Game 뷰에서 화면이 아래와 같이 변경된다.
(변경되지 않는다면 Game Window Guides를 체크하면 된다.)
Aim은 Target을 따라가는 알고리즘을 제어한다.
Lookahead Time과 Smoothing을 설정하면 조금 더 부드럽게 화면을 전환할 수 있다.
Dead Zone을 설정하면 이 영역에 있을 때는 카메라 시야를 계속 유지한다.
그 외 Screen / Bias 등을 조절해서 기준점을 설정할 수 있다.
Aim 설정은 아래와 같이 GetRig( 0, 1, 2 )로 Top / Middle / Buttom 설정을 들고와서 스크립트로 제어한다.
CinemachineComposer composer
= freeLook.GetRig(1).GetCinemachineComponent<CinemachineComposer>();
composer.m_DeadZoneHeight = 0.3f;
composer.m_DeadZoneWidth = 0.5f;
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
'개발 > Unity' 카테고리의 다른 글
(6) Blend List Camera로 자연스럽게 시야 변경하기 - 유니티 시네머신 튜토리얼 (0) | 2022.09.19 |
---|---|
(5) Blend List Camera로 카메라 전환하기 - 유니티 시네머신 튜토리얼 (0) | 2022.09.19 |
유니티 컴파일 옵션 변경하기 (Recompile After Finished Playing) (0) | 2022.09.17 |
(3) 마우스 스크롤로 FreeLook Camera Zoom in / out - 유니티 시네머신 튜토리얼 (0) | 2022.09.15 |
(2) 마우스 버튼 클릭으로 FreeLook Camera 컨트롤하기 - 유니티 시네머신 튜토리얼 (0) | 2022.09.14 |
댓글