선형보간 / 구면 선형보간

  • 선형 보간 (Liner Interpolation)
  • 구면 선형 보간 (Spherical Linear Interpolation)
  • 시작점과 끝점 사이의 특정 위치의 값을 추정할 때 사용
  • 보간 함수는 현재 못푯값으로 변경할 때 갑자기 변경하지 않고 부드럽게 변경시키는 로직에 많이 활용
    Vector3.Lerp(시작 좌표, 종료 좌표, t);
    Mathf.Lerp(시작 , 종료 , t);
    Quaternion.Lerp(시작 각도, 종료 각도, t);
    

선형보간 차트 (Liner Interpolation)

[2021_유니티 절대강좌_주인공 케릭터 제작]

  • 빨간 점 이 시작이고 파란 점이 끝점으로, 시작점에서 끝점으로 이동하는 데 걸리는 시간 t를 1초로 가정시
  • 0.25초 일 때의 이동 거리와 0.5초일 때의 이동 거리가 동일하다.
    Mathf.Lerp(0,10,0.0f); // 0을 반환
    Mathf.Lerp(0,10,0.5f); // 5을 반환
    Mathf.Lerp(0,10,0.8f); // 8을 반환
    Mathf.Lerp(0,10,1.0f); // 10을 반환
    

구면 선형 보간 차트 (Spherical Linear Interpolation)

[2021_유니티 절대강좌_주인공 케릭터 제작]

  • 직선 형태가 아닌 구면(구체)형태로 값을 추론
  • 구면을 따라서 값을 반환하기에 시간 t가 증가할 때 시작점과 종료점은 느리게 증가
  • 중간지점은 동일한 시간 대비 이동해야 할 거리가 크기 때문에 빠르게 이동하는 특성이 있다.
  • 주로 회전 로직에 사용
    Vector3.Slerp(시작 좌표, 종료 좌표, t);
    Quaternion.Slerp(시작 좌표, 종료 각도, t);
    

Vector3.Smoothdamp

  • 보통 카메라의 Follow 로직에 사용
    Vector3.SmoothDamp(Vector3 current, 
                     Vector3 target, 
                     ref Vector3 currentVelocity,
                     float smoothTime,
                     float maxSpeed,
                     float deltaTime);
    
매개변수 설명
current 시작위치
target 목표위치
currentVelocity 현재속도
smoothTime 목표 위치까지의 도달 시간
maxSpeed 최대 속력 제한 값(기본값 : 무한대 Mathf.infinity), 생략가능
deltaTime 프레임 보정을 위한 델타 타임(기본값 : Time.deltaTime), 생략가능