Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why does my CFrame Tween finish before it's supposed to? [SOLVED]

Asked by 9 years ago
function lerp(c1, c2, a)
    local x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz = c1:components()
    local cf1 = {x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz}
    local x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz = c2:components()
    local cf2 = {x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz}
    local lerped = {}
    for i, v in pairs(cf1) do
        table.insert(lerped, cf1[i] + (cf2[i] - cf1[i]) * a)
    end
    return CFrame.new(unpack(lerped))
end

function TweenCFrame(object, property, cframe, time)
    for i = 1, time * 60 do
        object[property] = lerp(object[property], cframe, i/(time * 60))
        rs.RenderStepped:wait()
    end
end

while true do
    TweenCFrame(game.Workspace.Part, "CFrame", CFrame.new(50, 5, 0), 1)
    TweenCFrame(game.Workspace.Part, "CFrame", CFrame.new(0, 5, 0), 1)
end

If you do this it does the lerp but it finishes to soon? When I run the function with a 3 second tween, it finishes in roughly a second. In a second long lerp it finishes in about 1/3rd the time also.

I tested this using Heartbeat instead of RenderStepped, same problem (I did reduce 'time * 60' to 'time * 30'), I also tested with wait() and they both finished too fast. I tested the math but the math seems to be spot on? What's the problem here?

EDIT

The problem was, I am using linear interpolation wrong, updated code

0
I've also encountered this problem with gui's. It seems that if something is tweened while in a while loop, it stops before it's supposed to. Will be interesting to see an answer for this. LordSpectrus 25 — 9y
0
Solved in case you wanted a notification for this YellowoTide 1992 — 9y

Answer this question