Add Easing For Camera:Interpolate()

Camera:Interpolate() is really cool, but it often looks very awkward when it reaches its destination or when it starts, as it goes 0 to max speed instantly, or abruptly comes to a screeching halt. Please give us easing options similar to what we have with tweeting GUI objects, so the beginning and end of interpolation looks smooth and professional.

19 Likes

Support

Support

To be fair, you could use CFrame:lerp and just make the easing function yourself. They’re easy to find online. I’m not even sure there’s a good reason to have TweenSize and TweenPosition considering it’s relatively easy to design it yourself.

I agree. But what’s the point of having an interpolate function if it can’t look smooth. I tried stringing together interpolations but it just ends up looking jagged and weird. I’ve since created my own camera movement module using cframe lerp, renderstepped and an easing function, but if we have the interpolate function then it should also have easing.

It should probably be deprecated. There’s no need to maintain two things that do virtually the same thing.

How does it actually work? It confuses me that it uses 2 CFrames, surely it only needs 1?

:Interpolate()?

One CFrame is the camera’s end position and the other is its focus during and after the transition.

Shouldn’t one or both of those values be Vector3’s then?

…yeah

I think having built in easing methods is good because it’s faster when done on the C side
…and the goal of a game engine is to make it as easy as possible to go from Idea->Game.

Sure people could write everything themselves, but games would take a lot longer that way. Things people do all the time should be built in.

2 Likes

I agree that it’s good to do stuff on the C side when possible. But making per-property easing methods is bad – it’d be messy and a pain to maintain them for each and every property. Opting to only provide easing methods for certain properties is another option, but then that’s pretty inconsistent and we’d see an influx of “can you add an easing method for x?” every time a property needed to be interpolated.

What we really need is a generic interpolation method that takes an instance, a property, and start/end values, interpolating between them on the C side. This wouldn’t require constant maintenance/updates or clutter the API while still giving that performance boost.

3 Likes