유니티:주인공 시점

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

틀:유니티

  1. 유니티:개요
  2. 유니티:기본 조작
    1. 유니티:에셋스토어
  3. 유니티:카메라
  4. 유니티:오브젝트
    1. 유니티:데이터 입력받기
    2. 유니티:오브젝트 이동(오브젝트 조작)
    3. 유니티:힘으로 오브젝트 이동
    4. 유니티:충돌 이벤트
    5. 유니티:오브젝트 작성 tip
    6. 유니티:프리팹
  5. 유니티:코딩기초
    1. 유니티:C sharp 코딩 편의기능
    2. 유니티:MonoBehaviour
    3. 유니티:이벤트 메서드
    4. 유니티:컴포넌트 조작하기
  6. 유니티:UI
  7. 유니티:게임 내 화면
  8. 유니티:플레이어
    1. 유니티:모델
    2. 유니티:캐릭터 이동
    3. 유니티:애니메이션
    4. 유니티:주인공 시점
  9. 유니티:맵
    1. 유니티:투명한 벽 만들기
    2. 유니티:내비게이션
  10. 유니티:씬
  11. 유니티:몬스터
  12. 유니티:아이템
  13. 유니티:음향
    1. 유니티:배경음
    2. 유니티:효과음
  14. 유니티:빌드
  15. 유니티:VR
    1. 유니티:VR:UI
    2. 유니티:VR:VR로 변환
  16. 유니티:팁

개요[편집 | 원본 편집]

캐릭터를 움직여도 시점은 변하지 않는다. 캐릭터의 위치, 시선에 따라 카메라의 방향을 바꾸어야 할 때가 있는데, 이를 위한 지식.

캐릭터 조작과 동일하게 스크립트로 카메라를 제어한다.

스크립트[편집 | 원본 편집]

다양한 방식의 스크립트를 여기에 안내한다. 참고해 작성해보자.(좋은 방식이 있다면 추가하거나 수정해보자.)

캐릭터를 따라가기만 할 경우[편집 | 원본 편집]

캐릭터 시선과 상관없이, 따라가기만 하는 경우.

가장 간단한 방법은 캐릭터 하위의 오브젝트로 만들어버리는 것이다. 하위의 오브젝트는 상위 오브젝트를 기준으로 위치가 배정되므로.

하드한 고정이 아니라 매끄럽게 따라가게 하고 싶다면 다음과 같은 스크립트를 이용하면 된다. 이 스크립트를 메인 카메라에 적용하면 된다.

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에 캐릭터를 드래그해 넣으면 된다.