iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0

今天要來講動畫~


1. 介紹

在過去的單元,我們再改變一項屬性的時候,多半都是直接對屬性值做更改,但如果今天我想要以比較平滑的方式修改屬性,舉例來說,我不想要直接把物件的位置從A點移動到B點,該如何達到呢?

你可能會想到用for迴圈,但這樣有個壞處是: 你必須要等待這個屬性改變完才執行後續的程式,而這個時候我們就可以用一項服務,叫做TweenService


2. 用法

TweenService的寫法會像這樣

local TweenService = game:GetService("TweenService")
local object = --你要使用此服務的物件
local TweenInformation = TweenInfo.new(--動畫執行的時間, --動畫的樣式, ...)
local goal = {--以字典的方式呈現要改變的屬性}

local Tween = TweenService:Create(object, TweenInformation, goal)
Tween:Play()

上述的用法都已經使用註解解釋,現在來解釋其他函式的用意
TweenInfo: 可以新增一項動畫的屬性,裡面的參數包括 (照順序排)
動畫執行的時間 類型: 數字
動畫的樣式 類型: Enum物件
動畫的方向 類型: Enum物件
重複次數(如果值為-1則會無限重複) 類型: 整數
是否來回 類型: 布林值
延遲時間 類型: 數字


3. 實作

現在我們來做出以下這樣的效果
https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExMnFpMGVwbW51MjEzaW1qbTNhN3UwdGRxNm56YXZ5c28wa28xcHRrOSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/DzUtvp7rL8NT1ajYEl/giphy.gif

首先,環境建置你很熟了我就不講,接下來在腳本裡面做好各項定義

local TweenService = game:GetService("TweenService")
local Object = workspace:WaitForChild("Part")
local TI = TweenInfo.new(1, Enum.EasingStyle.Linear)
local Goal = {["Position"] = Vector3.new(-14, 0.5, -5)}

然後定義出Tween,也就是動畫物件,並播放他

local TweenService = game:GetService("TweenService")
local Object = workspace:WaitForChild("Part")
local TI = TweenInfo.new(1, Enum.EasingStyle.Linear)
local Goal = {["Position"] = Vector3.new(-14, 0.5, -5)}

local Tween = TweenService:Create(Object, TI, Goal)
Tween:Play()

通常我們在做動畫屬性的時候,不常會用到後面的屬性,所以在這邊我們只定義時間與樣式

你可能會覺得這樣太麻煩了,所以其實把它寫成同一行也沒有關係

game:GetService("TweenService"):Create(workspace:WaitForChild("Part"), TweenInfo.new(1, Enum.EasingStyle.Linear), {["Position"] = Vector3.new(-14, 0.5, -5)}):Play()


上一篇
Day 23: 細部解釋CFrame.Angles方法
下一篇
Day 25: RunService
系列文
透過Roblox Studio學習Lua語言與基本程式邏輯25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言