Datatype.NumberSequencer 数据类型代表一个从 0 到 1 的数值系列。 数值用 1>Datatype.NumberSequencerKeypoint1> 输入型表示。 此类型在属性上使用 4>Class.ParticleEmitter.Size4> 和
平等
两个 NumberSequence 对象只相当于,如果它们的 NumberSequenceKeypoint 值都相同,即使两者都将导致类似图形。
评估
Datatype.NumberSequencer 类型不具有特定时间/点的值获取方法,因为键点可以有随机包裹。但假设您的键点的0 键点的所有价值都是1,您可以使用以下函数进行评估:1>평均值1>。
local function evalNumberSequence(sequence: NumberSequence, time: number)
-- 如果时间为 0 或 1,将第一个或最后的值返回
if time == 0 then
return sequence.Keypoints[1].Value
elseif time == 1 then
return sequence.Keypoints[#sequence.Keypoints].Value
end
-- 否则,通过每对连续的键点对象
for i = 1, #sequence.Keypoints - 1 do
local currKeypoint = sequence.Keypoints[i]
local nextKeypoint = sequence.Keypoints[i + 1]
if time >= currKeypoint.Time and time < nextKeypoint.Time then
-- 计算点之间的 alpha 是多远
local alpha = (time - currKeypoint.Time) / (nextKeypoint.Time - currKeypoint.Time)
-- 使用 alpha 返回值之间的点
return currKeypoint.Value + (nextKeypoint.Value - currKeypoint.Value) * alpha
end
end
end
local numberSequence = NumberSequence.new{
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.5, 1),
NumberSequenceKeypoint.new(1, 0),
}
print(evalNumberSequence(numberSequence, 0.65)) --> 0.7