- Today
- Total
프로그래밍 농장
Cinemachine [Unity] 본문
Package Manager에서 Cinemachine 및 sample Scene까지 다운받고 아래와 같이 씬을 열어 플레이해준다. (2D)
플레이어를 이동시켜보며 시네머신 카메라가 어떤식으로 동작하는지 확인해본다.
그렇다면 이번에는 시네머신 카메라를 삭제하고 직접 생성해서 구현해보도록하겠다.
아래와 같이 시네머신 카메라를 새로 생성해준 후, 인스펙터상의 Follow를 캐릭터에 맞추어 준 후 플레이해보면, 시네머신 카메라가 자동으로 캐릭터를 따라다니며 비추게 된다.
카메라의 orthograph 사이즈 설정도 가능하다.
그 외 인스펙터에서 dutch angle 등 카메라에 대한 다양한 설정이 가능하다.
또한 아래와 같이 Body 인스펙터에서 카메라가 비출 중심점을 지정해줄수도있다.
아래와 같이 임의로 y축을 움직일수도 있지만 위 Follow에서 그냥 플레이어의 Head에 Follow를 붙히는 방법이 간단하다.
시네머신 카메라가 플레이어를 추적하는 정도 (빠르기)
타겟이 움직이는 범위 : Soft Zone
캐릭터가 조금만 움직였을때는 카메라가 같이 이동하지 않도록 구현하고 싶을때 : Dead Zone
Lookahead 를 통하여 아래와 같이 플레이어의 이동방향(lookahead) 쪽을 기준으로 카메라의 중심점을 잡아 비춘다.
Lookahead smoothness 를 높히면 카메라의 흔들림( lookahead에대한) 이 덜해진다.
카메라 흔들기, 손으로 들고있는듯한 느낌주기 등.. Noise 이스펙터에서 설정가능.
아래와 같이 Cube 오브젝트를 맵에 딱 맞게 맞추어준 후, 렌더링을 꺼주고, 이를 CM vcam1의 Cinemachine Confiner의 Bounding Volume 에 콜라이더를 넣어주게 되면 아래와 같이 큐브 콜라이더안으로 카메라가 들어오게 되며, 이안에서만 카메라가 화면을 비추게 된다.
또한 만약에 두가지이상의 오브젝트를 카메라 한곳에서 항상 동시에 비추어주고 싶다면, 아래와 같이 시네머신 타겟그룹에 리스트를 생성해서 비춰줄 오브젝트들의 transform을 등록해주면 된다. 그러면 등록된 오브젝트들이 움직여도 , 항상 전부 비추어주게 된다.
thirdpersonconteoller에서 아래와 같이 코드상에서 특정조건을 만족이 Cam을 교체해줄수있다.
또한 위처럼 두 오브젝트의 중심점을 아래와 같이 카메라에서 잡아주고 있는것이며, 만약 이때 두 오브젝트가 가까워져서 카메라가 너무 근접하다고 하면 , 인스펙터에서 아래와 같이 수정해줄수있다.
Group Framing Size 를 변경하여 설정해줄수있다.
<기존화면>
< 'Group Framing Size' 를 사용하여 근접시 화면기준점을 넓혀준 화면>
https://www.youtube.com/watch?v=x6Q5sKXjZOM&list=PLX2vGYjWbI0TQpl4JdfEDNO1xK_I34y8P&ab_channel=Unity
이번에는 아래와 같이 플레이어를 비출 Virtual Camera의 인스펙터에서 Aim의 Value Range를 아래와 같이 조절해주면 마우스의 POV에 따른 최대/최소치를 정해줄수있다. 이에따라서 개발자가 원하는대로 최대로 화면에 비춰지는 값을 지정해줄수있다.
Damping을 통하여 캐릭터를 비추는 카메라가 따라가는 시간도 잡아줄수있다.
예를들어, Damping의 x,y,z 값을 전부 0으로 잡아주면 플레이어가 아무리 빨리 뛰거나 움직여도 카메라가 못따라가거나 떨리는현상이 일어나지않는다.
또한 위에서 POV로 카메라를 잡아주게 되면 Z축은 움직이지 않게 된다. 이때에는 아래와 같이 Dutch값을 조절해서 좌우로 비뚤어진 현상을 구현할수있다.
DollyCam과 DollyTrack을 이용하여 아래와 같이 트랙을 생성해준후, loop를 체크하여 트랙 끝단을 이어주고, 이 트랙에 dolly cart를 생성하고 실어준후, 그 자식에 비춰줄 cam을 넣어서 플레이하게되면 아래와 같이 트랙을 따라 dollycart에 들어있는 캠이 트랙을따라 카메라를 비추는 기능을 구현가능하다.
해당 기능을 통하여 폴가이즈에서 시작전 맵을 한번 훑는기능. . 등을 구현할수있을것이다.
'Unity' 카테고리의 다른 글
Onion Design [ Unity ] (0) | 2022.09.29 |
---|---|
Death Parkour 8일차 [ Unity ] (0) | 2022.09.29 |
Cinemachine - 벽뚫기방지 및 시네머신 교체원리 [ Unity ] (0) | 2022.09.28 |
Base에 대하여 [Unity] (0) | 2022.09.27 |
쉐이더그래프 [ Unity ] (0) | 2022.09.26 |