시네머신 Test – 1

Unity에는 Cinemachine이라는 기능이 있습니다.

https://unity.com/kr/unity/features/editor/art-and-design/cinemachine

쉽게 보면 학원이나 개인 프로젝트에서 카메라가 플레이어를 따라가는 경우

연출 등으로 카메라를 바꿔야 한다.

구현하기 쉬운 기능입니다.


설치는 Unity Editor의 패키지 관리자를 통해 수행됩니다.

(2017 버전 이후 지원)


패키지 관리자에서 검색하여 찾을 수 있습니다.


시네머신에 대한 기본 튜토리얼 시네머신 – Unity 배우기 링크를 참조하십시오

(강연하시는 분이 프랑스어를 하는 영국인 같으니 자막을 사용합니다!
)


7개의 강의가 있으며 2017.1 버전만 선택하였습니다.


테이스터는 다음 작업을 수행하여 캐릭터를 따라갑니다.

나는 카메라를 만드는 일을 하고 있었다.

카메라는 큐브(플레이어)를 따라다닌다
특정 구간에 돌입하면 카메라(원경)가 전환된다
해당 구간을 벗어나면 초기 상태의 카메라(근거리)로 다시 전환된다

먼저 Cinemachine Brain 구성 요소를 메인 카메라에 연결합니다.


그런 다음 가상 카메라를 만들어 플레이어를 따라가는 카메라를 만듭니다.


시네머신 카메라 제작 방법

큐브를 보지 않고

목적은 당신만을 따라가는 카메라이기 때문에 따라가는 부분에만 큐브를 넣어주세요.


같은 방식으로 원경을 볼 수 있는 카메라를 만듭니다.


먼저 큐브를 이동하는 간단한 스크립트를 작성합니다.

public class TestMove : MonoBehaviour
{
	public float speed = 5f;
	public float jumpForce = 10f;
	public float gravity = 20f;

	private bool isGrounded { get { return transform.position.y <= 0; } }
	private Vector3 moveDirection;

	private void Start()
	{
		moveDirection = Vector3.zero;
	}

	private void Update()
	{
		moveDirection = new Vector3( Input.GetAxis( "Horizontal" ), moveDirection.y, 0 );
		moveDirection = transform.TransformDirection( moveDirection );
		moveDirection.x *= speed;
		if( isGrounded )
		{
			moveDirection.y = 0;
			if( Input.GetButton( "Jump" ) )
				moveDirection.y = jumpForce;
		}
		else if( transform.position.y > 0 )
			moveDirection.y -= gravity * Time.deltaTime;

		transform.Translate( moveDirection * Time.deltaTime, Space.World );
	}
}

위치의 y 좌표가 0 이하이면 큐브가 점프할 수 있습니다.

공중에 있을 때는 일정한 가속도로 하강한다.


시네머신의 가상 카메라는 물체가 켜져 있을 때만 작동합니다.

영역에 들어가고 나갈 때 토글하는 스크립트를 작성하십시오.

// 이 스크립트는 영역에 붙여준다
public class CamChangeZone : MonoBehaviour
{
	public GameObject originCam;
	public GameObject secondCam;

	private void OnTriggerEnter( Collider other )
	{
		if( other.gameObject.layer == LayerMask.NameToLayer( "Player" ) )
		{
			originCam?.SetActive( false );
			secondCam?.SetActive( true );
		}
	}

	private void OnTriggerExit( Collider other )
	{
		if( other.gameObject.layer == LayerMask.NameToLayer( "Player" ) )
		{
			originCam?.SetActive( true );
			secondCam?.SetActive( false );
		}
	}
}

참고: 가상 카메라 전환 시 옵션을 설정할 수 있습니다.


기본 카메라에 연결된 Cinemachine Brain 기본 믹스를 통해 기본 믹스 옵션을 선택할 수 있습니다.

(옆에 있는 s는 섞는 시간)


이동할 큐브가 영역(트리거, 콜라이더)에 들어가야 하므로 강체와 콜라이더를 부착합니다.

그리고 위에서 작성한 TestMove 스크립트를 첨부하여 이동합니다.


움직이는 것만으로도 지루해 보일 것 같아서 트레일 렌더러를 첨부했습니다.