유니티:주인공 시점
둘러보기로 이동
검색으로 이동
- 유니티:개요
- 유니티:기본 조작
- 유니티:카메라
- 유니티:오브젝트
- 유니티:코딩기초
- 유니티:UI
- 유니티:게임 내 화면
- 유니티:플레이어
- 유니티:맵
- 유니티:씬
- 유니티:몬스터
- 유니티:아이템
- 유니티:음향
- 유니티:빌드
- 유니티:VR
- 유니티:팁
개요[편집 | 원본 편집]
캐릭터를 움직여도 시점은 변하지 않는다. 캐릭터의 위치, 시선에 따라 카메라의 방향을 바꾸어야 할 때가 있는데, 이를 위한 지식.
캐릭터 조작과 동일하게 스크립트로 카메라를 제어한다.
스크립트[편집 | 원본 편집]
다양한 방식의 스크립트를 여기에 안내한다. 참고해 작성해보자.(좋은 방식이 있다면 추가하거나 수정해보자.)
캐릭터를 따라가기만 할 경우[편집 | 원본 편집]
캐릭터 시선과 상관없이, 따라가기만 하는 경우.
가장 간단한 방법은 캐릭터 하위의 오브젝트로 만들어버리는 것이다. 하위의 오브젝트는 상위 오브젝트를 기준으로 위치가 배정되므로.
하드한 고정이 아니라 매끄럽게 따라가게 하고 싶다면 다음과 같은 스크립트를 이용하면 된다. 이 스크립트를 메인 카메라에 적용하면 된다.
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
// 따라갈 타겟을 정한다. 스크립트 적용 후, 인스펙터 창에 따라갈 대상을 끌어다 두자.
[SerializeField]
Transform target;
// 카메라가 따라갈 속도.
[SerializeField]
float speed = 5f;
// 따라갈 대상과 카메라의 위치관계를 저장할 변수.(이것이 유지되도록 한다.)
Vector3 offset;
void Start()
{
offset = transform.position - target.position;
}
void FixedUpdate()
{
// 움직인 대상으로부터 카메라 위치를 지정한다.
Vector3 targetCamPos = target.position + offset;
// 시작점과 끝점을 지정하여 일정한 속도로 카메라를 움직이게 한다.
transform.position = Vector3.Lerp(transform.position, targetCamPos, speed * Time.deltaTime);
}
}
적용한 후 target에 캐릭터를 드래그해 넣으면 된다.