플레이어는 자신의 행동이 애니메이션과 관련하여 무언가를 수행하는지 여부에 대한 피드백을 받을 수 있습니다.이는 타격을 받았을 때 나무가 흔들리거나, 먹이를 먹었을 때 애완동물이 즐겁게 튀는 것일 수 있습니다.이 경우 플레이어가 클릭할 때 이동하는 버튼을 만드는 방법을 보여 드립니다.
애니메이션으로 이어지는 십대
개체를 애니메이션하는 한 가지 방법은 십대를 사용하는 것입니다.A 중간 , 일정 시간 동안 시작 값을 종료 값으로 변경하는 프로세스는 시작 값을 종료 값으로 변경하는 프로세스입니다.십대는 위치, 색상 또는 회전과 같은 속성을 변경하는 데 사용할 수 있습니다.
프로젝트 설정
이 프로젝트에서 청소년은 시작 위치에서 목표 위치로 개체를 이동합니다.
애니메이션할 부분을 결정합니다. 아래 예제에서 1 는 버튼이고 2 는 벽입니다.
이동할 부분에서 ClickDetector와 TweenMove라는 이름의 스크립트를 추가하십시오. ClickDetector의 이름을 바꾸지 마십시오.
TweenMove 스크립트를 엽니다. 그런 다음 아래 스크립트를 복사하고 붙여넣습니다.
-- 선택한 축에 따라 부품을 왕복하십시오-- 버튼에는 앞으로 또는 뒤로 부품을 이동하는 상태가 있습니다local TweenService = game:GetService("TweenService")local button = script.Parentlocal clickDetector = button:FindFirstChildWhichIsA("ClickDetector")local buttonState = -1 -- 버튼 방향 결정; -1은 들어갈 것임을 의미하고, 1은 튀어나올 것임을 의미합니다local inTween = false-- 사용자 지정 가능한 변수local TWEEN_TIME = 0.15local TWEEN_MOVE_DISTANCE = 1.5-- 십대 변수local buttonTweenInfo = TweenInfo.new(TWEEN_TIME, -- 시간Enum.EasingStyle.Quad, -- 완화 스타일Enum.EasingDirection.Out -- 완화 방향)local function buttonPress()-- 버튼이 중간 단계에 있으면 다시 사용되지 않도록 방지합니다if inTween == true thenreturnend-- 버튼 위치에 대한 새 CFrame 계산local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)-- 트위언을 만들고 재생하기local tweenButton = TweenService:Create(button, buttonTweenInfo, {CFrame = newCFrame})tweenButton:Play()inTween = true-- 십대 완료 시 버튼을 다시 사용할 수 있게 하기tweenButton.Completed:Connect(function()inTween = false-- 버튼 상태 반전buttonState *= -1end)endclickDetector.MouseClick:Connect(buttonPress)플레이테스트 및 개체를 클릭합니다.테스트하는 동안 개체가 잘못된 방향이나 거리로 이동하는 것을 알 수 있습니다.다음 섹션에서 사용자 지정할 수 있습니다. That can be customized in the next section.


이동 중간 조정
스크립트가 추가되면 게임의 요구 사항에 맞게 사용자 지정할 수 있습니다.버튼은 앞으로 또는 뒤로, 위로 또는 아래로 방향으로 이동하도록 조정할 수 있습니다.
위치 변경
기억하십시오, 십대는 시작 값에서 목표 값으로 전환합니다.이 스크립트는 CFrames를 사용하여 현재 위치와 관련된 방향으로 버튼을 이동합니다.그 방향은 스크립트의 라인 28 에서 제어됩니다.
그 라인에서 X, Y, Z 좌표를 사용하여 새 CFrame이 생성됩니다. 이 예제에서는 버튼이 해당 Y축에 대해 이동합니다.
-- 버튼 위치에 대한 새 CFrame 계산local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)
버튼이 다른 방향으로 이동하려면 원하는 좌표 중 하나를 다음 라인으로 바꾸십시오: .다른 모든 좌표를 0으로 설정합니다.
예를 들어, 이 줄은 대신 X축에 대해 이동합니다.
-- 버튼 위치에 대한 새 CFrame 계산local offsetCFrame = CFrame.new( TWEEN_MOVE_DISTANCE * buttonState, 0, 0)local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)
중간 시간과 거리
스크립트에는 청소년의 이동에 영향을 미치는 다음 변수가 포함되어 있습니다.TWEEN_TIME와 같은 대문자로 된 이름은 이 스크립트가 수정되도록 특별히 작성됩니다.
아래의 하나의 변수 값을 변경해 보세요:
- 라인 11 - TWEEN_TIME : 청소년이 발생하는 데 걸리는 시간(초).
- 라인 12 - TWEEN_MOVE_DISTANCE : 버튼이 스터드로 이동하는 거리.
다른 속성 변경하기
숫자 데이터 유형을 가진 대부분의 속성을 중간에서 전환할 수 있습니다.이 섹션에는 회전과 같은 일반 속성이 포함되어 있으며, 이를 사용하여 게임에 더 많은 플레이어 피드백을 가져올 수 있습니다.기억하십시오, 한 번에 여러 속성을 전환할 수도 있습니다.
속성의 전체 목록은 TweenService에서 참조하십시오.
회전
회전을 위해 Vector3만 사용하는 대신 트위닝과 CFrames를 결합하십시오.회전 십대는 크리처가 애완 동물로 선택되거나 코인이 회전할 때 움직이게 하는 데 사용할 수 있습니다.
다음 스크립트 예제에서는 크리처의 위치와 회전이 모두 클릭하여 애완동물이 되었을 때 얼마나 행복한지 보여주기 위해 중간 표시됩니다.
아래 코드는 TWEEN_ROT_ANGLES의 도 수에 따라 개체를 회전합니다.
-- 개체를 회전시키고 바운스하기 위해 트윈을 사용
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- 사용자 지정 가능한 변수
local TWEEN_TIME = 0.25
local TWEEN_ROT_ANGLES = -45
local TWEEN_MOVE_DISTANCE = 3
-- 십대 변수
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- 시간
Enum.EasingStyle.Quad, -- 완화 스타일
Enum.EasingDirection.Out, -- 완화 방향
1, -- 반복 횟수 (십대가 0보다 작으면 무한 루프로 반복됨) RepeatCount (when less than zero the tween will loop indefinitely)
true -- 리버스(중간 목표에 도달하면 한 번 리버스)
)
local function activateAction()
-- 개체가 전환되는 경우 다시 전환되지 않도록 방지합니다
if inTween == true then
return
end
-- 개체 위치와 회전을 위한 새 CFrame 계산
local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE, 0)
local rotatedCFrame = CFrame.Angles(math.rad(TWEEN_ROT_ANGLES), 0, 0)
offsetCFrame = offsetCFrame:ToWorldSpace(rotatedCFrame)
local newCFrame = partToTween.CFrame:ToWorldSpace(offsetCFrame)
-- 트위언을 만들고 재생하기
local tweenObject = TweenService:Create(partToTween, tweenInfo, {CFrame = newCFrame})
tweenObject:Play()
inTween = true
-- 십대 완료 시 개체를 다시 클릭할 수 있도록 만들기
tweenObject.Completed:Connect(function()
inTween = false
end)
end
clickDetector.MouseClick:Connect(activateAction)
규모
게임 내 개체의 크기를 변경하면 플레이어가 상호 작용했음을 보여줄 수도 있습니다.예를 인스턴스, 건강 팩이나 보석과 같은 획득물은 만지면 줄어들 수 있습니다.부품을 확장하려면 원하는 크기의 새 Vector3로 중간 목표를 변경합니다.
-- 터치되면 부품의 크기를 조정하고 파괴합니다
local TweenService = game:GetService("TweenService")
local partToScale = script.Parent
local inTween = false
-- 사용자 지정 가능한 변수
local TWEEN_TIME = 1
local TWEEN_SCALE = Vector3.zero
-- 십대 변수
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- 시간
Enum.EasingStyle.Exponential, -- 완화 스타일
Enum.EasingDirection.Out -- 완화 방향
)
local function onPartTouch(otherPart)
-- 개체가 전환되는 경우 다시 전환되지 않도록 방지합니다
if inTween == true then
return
end
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 수집된 이후 개체에 대한 추가 충돌을 방지하기 위해
partToScale.CanCollide = false
-- 트위언을 만들고 재생하기
local tweenObject = TweenService:Create(partToScale, tweenInfo, {Size = TWEEN_SCALE})
tweenObject:Play()
inTween = true
-- 십대 완료 시 개체 파괴
tweenObject.Completed:Connect(function()
partToScale:Destroy()
end)
end
end
partToScale.Touched:Connect(onPartTouch)
색상 변경
부품은 Color3 값으로 전환하여 색상을 전환할 수 있습니다.예를 인스턴스, 적이나 파괴 가능한 개체는 색상을 섬광시켜 그들이 타격당했거나 클릭되었음을 피드백할 수 있습니다.
-- 클릭하여 개체의 색상을 변경하고 3번 클릭 후 삭제
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- 커스터마이즈 가능한 변수
local TWEEN_TIME = 0.2
local COLOR_ON_HIT = Color3.fromRGB(255, 0, 50)
local hitCount = 0
-- 십대 변수
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- 시간
Enum.EasingStyle.Exponential, -- 완화 스타일
Enum.EasingDirection.InOut, -- 완화 방향
0, -- 반복 횟수 (십대가 0보다 작으면 무한 루프로 반복됨) RepeatCount (when less than zero the tween will loop indefinitely)
true -- 리버스(중간 목표에 도달하면 한 번 리버스)
)
local function activateAction()
-- 개체가 전환되는 경우 다시 전환되지 않도록 방지합니다
if inTween == true then
return
end
-- 트위언을 만들고 재생하기
local tweenObject = TweenService:Create(partToTween, tweenInfo, {Color = COLOR_ON_HIT})
tweenObject:Play()
inTween = true
-- 십대 완료 시 개체를 다시 클릭할 수 있도록 만들기
tweenObject.Completed:Connect(function()
inTween = false
-- 증가 히트 수
hitCount += 1
-- 3번 타격 후, 개체 파괴
if hitCount == 3 then
partToTween:Destroy()
end
end)
end
clickDetector.MouseClick:Connect(activateAction)
이 스크립트는 색상을 변경하기 위해 일반 부품을 사용하지만, 적용된 텍스처가 있는 MeshParts에서도 이를 사용할 수 있습니다.메시 파트는 일반적으로 Roblox Studio에서 직접 빌드되는 부품보다 3D 모델을 가져와 종종 가져옵니다.
전체 텍스처링된 MeshPart로 작업하는 경우 팔로잉권장합니다.
메시 파트 대신 특수 메시를 사용하십시오. 이는 메시 파트의 텍스처가 스크립트에 의해 염색되는 색을 재정의하기 때문입니다.
색 속성 대신 특수 메쉬의 VertexColor를 수정하기 위해 스크립트를 변경합니다.
프로젝트 샘플
이 비복사 차단되지 않은 플레이스모든 스크립트 예제를 보고 수정할 모든 스크립트를 가져옵니다.