유니티:주인공 시점

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2021년 7월 29일 (목) 23:37 판 (새 문서: {{유니티}} == 개요 == 캐릭터를 움직여도 시점은 변하지 않는다. 캐릭터의 위치, 시선에 따라 카메라의 방향을 바꾸어야 할 때가 있는데,...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

틀:유니티

  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);
    }
}