트윈(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)}
local TweenGoals ={ Orientation = Vector3.new(0, 180, 0)}
local TweenGoals ={ Size = Vector3.new(200, 200, 200)}
3. 트윈 실행
TweenService:Create 함수에 트윈을 적용할 대상과 미리 설정한 TweenInfo와 TweenGoals을 전달하여 호출하면 트윈을 생성할 수 있으며, 생성된 트윈을 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()
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)localfunctionOnCompleted()print("Tween Complete!")endTween.Completed:Connect(OnCompleted)Tween:Play()