TIL_2025_02_20 Unity Spline 활용

김효중·2025년 2월 20일

개요 - Spline이란?

Spline은 곡선을 사용하여 커브와 경로에 따라 오브젝트와 동작을 생성할 수 있습니다.
오브젝트의 이동 경로를 만들거나 맵의 배치, 새로운 선을 생성할 수 있습니다.

이를 통해 기존의 레벨 디자인을 비교적 쉽게할 수 있고 여러 특수 효과를 구현할 수 있습니다.

기본


Spline을 사용하기 위해서 는 Spline 패키지를 설치합니다.

이후 다른 오브젝트처럼 생성 할 수 있습니다. 우클릭 > Spline > Draw Spline Tool를 통해 곡선을 이룰 점을 생성할 수 있습니다.
마우스를 클릭하면 점이 생성 되고, 마우스를 드래그하면 탄젠트라인으로 그릴 수 있습니다.
처음 시작점과 연결하여 선을 닫히게 할 수 있습니다.
편집을 종료하려면 ESC버튼을 눌러 종료합니다.

편집중에는 각각의 점을 선택 할 수 있으며 점의 위치나 연결 선의 방식을 변경 할 수 있습니다.

  • Linear : 직선 연결
  • Auto: 기본값, 곡선
  • Bezier : 탄젠트 가이드를 통해 곡선의 곡률 변경 가능
  • Bezier/Mirrord : 기본값, 탄젠트 가이드의 좌우가 같아 대칭을 이룸
  • Bezier/Continuous: 탄젠트 가이드의 좌우가 항상 반대이나 크기는 독립, 부드러운 선 작성
  • Bezier/Broken : 기본값, 탄젠트 가이드의 좌우가 각각 독립, 날카로운 선 작성

    또한 Closed 를 체크해제하면 시작점과 마지막점이 연결을 끊을 수 있습니다.

예시1. 프리팹 배치

Spline > square로 사각형 선을 만들고 크기를 25로 만듭니다.
Spline Instantiate 컴포넌트를 추가하고 외벽에 사용할 프리팹을 추가합니다.
Instaniate Method와 Spacing을 변경하여 프리팹이 어떤 방식으로 배치 될 지 수정할 수 있습니다. 이때 Count를 변경하여 구체적인 수를 지정할 수 있다.

Instaniate Method

항목의 인스턴스화 방법에 대해 선택 가능

  • Instance Count : 지정된 갯수만큼의 인스턴스를 생성
  • Spline Distance: 스플라인 상에서의 거리 간격으로 분리된 하여 인스턴스 생성
  • Linear Distance : 월드 공간에서 선형욿 축정된 거리 간격으로 인스턴스 생성

Spacing(Count)

인스턴스간의 거리 설정

  • Exact : 인스턴스간의 거리를 명시적으로 설정
  • Auto : 겹치치 않고 최대한 많은 인스턴스 생성
  • Random : 특정 범위의 거리로 생성

Offeset

  • Position : 스플라인을 기준으로 이동
  • Rotation : 배치후 회전
  • Scale : 인스턴스의 크기
    아래는 위와 같은 설정으로 계단 프래팹을 생성한 예시이다.

설정 후 Bake Instaces를 누르면 씬 상에 별개의 오브젝트로 생성된다.
이후 각각의 오브젝트를 수정하여 배치 할 수 있습니다.

여러개의 오브젝트또한 배치 할 수 있습니다.
아래는 직전으로 배치한 모습입니다,

사각형, 직선, 원형, 도형등 다양한 배치를 사용할 수 있습니다.

2. 기하학 도형 - Spline Extrude

Spline Extrude를 사용하면 스플라인에 따라 오브젝트를 만들 수 있습니다.

해당 오브젝트는 스플라인을 따라 만들어지고 Material을 적용할 수 있습니다.

아래의 옵션을 통해 이를 조절할 수 있습니다.

  • Radius : 굵기
  • Profile Edges : 메시(원통)의 변의 갯수
  • Segments Per Unit : 메쉬의 한 단위의 길이를 구성하는 가장자리 루프의 수
  • Cap Ends : 메시의 끝 단면을 채울지 여부, 연결 된 상태면 무시 됨
  • Range/Percentage/from : 메시의 시작을 스플라인 기준 백분율로 표기
  • Range/Percentage/to : 메시의 끝을 스플라인 기준 백분율로 표기
  • Auto-Regen Geometry : 런타임에서 스플라인이 수정되면 메시도 자동으로 수정 될지 여부
  • Update Colliders : 메시가 돌출 될 때 연결된 모든 콜라이더의 업데이트 여부

3. 경로 이동 - Spline Animate

오브젝트를 경로상에서 이동하도록 할 수 있습니다.

Spline Animate를 사용하면 스플라인을 따라서 오브젝트가 이동합니다.
원하는 오브젝트에 추가하고 이동하고자하는 스플라인을 설정합니다.


위 옵션을 통해 움직임을 제어할 수 있다.

  • UpAxis : 게임 오브젝트의 기본 위쪽 방향 설정
  • ForwadAxis : 게임 오브젝트의 기본 정면 방향
  • Align To : 게임 오브젝트 정렬방법
    - None : 정렬 없음
    • Spline Element : 가장 가까운 점의 회전에서 보간
    • Spline Object : 스플라인 방향으로 정렬
    • World Space : 월드 표준 방향으로 정렬
  • PlayOnAwake : 게임 오브젝트 로드시 이동 시작
  • Start offset : (0~1) 처음 이동 시작 위치 스플라인 기준 비율
  • Method : 이동 기준
    - Time / Duration: 시간 기반, Duration 동안에 1회 완주하도록 이동
    • Speed : Speed 옵션 선택시 이동 속도
  • Easing : 이동의 감속/가속 운동, 선형운동의 분류
    - None : 감속/가속 없는 선형
    • Ease In Only : 처음에는 천천히 이후 가속
    • Ease Out Only : 끝날 때 감속
    • Ease In-Out : 천천히 시작 되고 이후 가속, 끝날 때 감속
  • Loop Mode : 이동의 루프 모드
    - Once : 한번만 진행
    • Loop Continuous : 이동 완료시 다시 시작
    • Ease In Then Countinuous : 천천히 시작하고 이후 반복
    • PingPong : 시작점과 도착점을 번갈아가며 이동

참고
https://docs.unity3d.com/Packages/com.unity.splines@2.1/manual/index.html
https://www.youtube.com/watch?v=LbTkEQA_7IA

profile
도전하는 개발자

0개의 댓글