트윈

개요

트윈(Tween)은 오브젝트의 속성을 부드럽고 자연스럽게 변화시키는 데 사용됩니다. 트윈을 이용하여 오브젝트의 위치나 회전, 크기 등 다양한 속성을 애니메이션화하여 게임에 몰입감 있고 풍부한 시각적 효과를 더할 수 있습니다.

특징

  • 트윈은 코드의 간결성과 성능 면에서 뛰어나며, 다양한 효과를 쉽게 구현할 수 있도록 도와줍니다.

  • 트윈은 다양한 Easing 스타일을 지원해 부드럽고 자연스러운 애니메이션을 제공합니다.

  • 트윈은 내부적으로 효율적으로 처리되며, 프레임별 업데이트보다 성능 부담이 적습니다.

  • 트윈은 완료 후 자동으로 종료되며, Completed 이벤트를 통해 후속 작업을 쉽게 처리할 수 있습니다.

구성 요소

  • TweenService : 트윈을 생성하고 관리하는 서비스입니다.

  • TweenInfo : 트윈의 동작 방식을 정의하는 객체로 변화 시간, 방향, 반복 횟수 등을 설정합니다.

  • TwwenGoals : 트윈으로 변화시킬 속성 값을 정의합니다.

사용 방법

1. 트윈 생성하기

TweenInfo.new 함수로 애니메이션의 지속 시간, 가속 및 감속 스타일, 반복 횟수 등 트윈 애니메이션의 동작 방식을 정의할 수 있습니다.

오브젝트의 위치나 회전 등 애니메이션을 적용할 속성은 TweenGoals 테이블에 설정합니다.

local TweenService = game:GetService("TweenService")
local Part = script.Parent

-- Tween 정보 설정
local TweenInfoData = TweenInfo.new(
    2,                        -- 변화 시간 (초)
    Enum.EasingStyle.Linear,  -- 변화 스타일
    Enum.EasingDirection.Out, -- 변화 방향
    0,                        -- 반복 횟수
    false,                    -- 왕복 여부
    0                         -- 대기 시간
)

-- 트윈으로 변화시킬 속성
local TweenGoals = 
{
    Position = Vector3.new(-400, 50, -350)
}

local Tween = TweenService:Create(Part, TweenInfoData, TweenGoals)

2. 트윈으로 변화시킬 속성 설정

TweenGoals에 어떤 속성을 설정하느냐에 따라 트윈의 기능이 달라집니다.

local TweenGoals = 
{
    Position = Vector3.new(-400, 50, -350)
}

3. 트윈 실행

TweenService:Create 함수에 트윈을 적용할 대상과 미리 설정한 TweenInfoTweenGoals을 전달하여 호출하면 트윈을 생성할 수 있으며, 생성된 트윈을 Play 함수로 실행할 수 있습니다.

local TweenService = game:GetService("TweenService")
local Part = script.Parent

-- Tween 정보 설정
local TweenInfoData = TweenInfo.new(
    2,                        -- 변화 시간 (초)
    Enum.EasingStyle.Linear,  -- 변화 스타일
    Enum.EasingDirection.Out, -- 변화 방향
    0,                        -- 반복 횟수
    false,                    -- 왕복 여부
    0                         -- 대기 시간
)

-- 트윈으로 변화시킬 속성
local TweenGoals = 
{
    Position = Vector3.new(-400, 50, -350)
}

local Tween = TweenService:Create(Part, TweenInfoData, TweenGoals)

Tween:Play()

4. 트윈 실행 제어

실행 중인 트윈은 Pause 함수로 일시정지할 수 있습니다.

...
Tween:Pause() -- Pause
wait(2)​
Tween:Play()  -- Resume

Cancel 함수로 실행 중인 트윈을 취소할 수 있습니다.

...
Tween:Cancel()

5. 트윈이 끝났을 때 이벤트 처리

Completed 이벤트를 이용하여 트윈의 실행이 끝났을 때, 필요한 처리를 작성할 수 있습니다.

local TweenService = game:GetService("TweenService")
local Part = script.Parent

-- Tween 정보 설정
local TweenInfoData = TweenInfo.new(
    2,                        -- 변화 시간 (초)
    Enum.EasingStyle.Linear,  -- 변화 스타일
    Enum.EasingDirection.Out, -- 변화 방향
    0,                        -- 반복 횟수
    false,                    -- 왕복 여부
    0                         -- 대기 시간
)

-- 트윈으로 변화시킬 속성
local TweenGoals = 
{
    Position = Vector3.new(-400, 50, -350)
}

local Tween = TweenService:Create(Part, TweenInfoData, TweenGoals)

local function OnCompleted()
    print("Tween Complete!")
end
Tween.Completed:Connect(OnCompleted)

Tween:Play()

Last updated