godotengine / godot-demo-projects

Demonstration and Template Projects
https://godotengine.org
MIT License
5.95k stars 1.65k forks source link

Tween Demo: icon is not reset between animation loop iterations #890

Closed InfiniteProductions closed 1 year ago

InfiniteProductions commented 1 year ago

Which demo project is affected: 2d/tween

OS/device including version: irrelevant

Issue description: The icon is no reset between each loop of animation, so after the first one, it start with its last scale & position (and any other parameters according to selected steps)

steps: -set loop param to 3 or more -deselect some transform and increase anim speed -run the demo

result: the second iteration show icon start in its last position in big size

suggestion: add a final step to set icon back to its former size & position (and any other parameters)

Screenshots of issue: tween_demo_issue

KoBeWi commented 1 year ago

Is this really a problem? I guess we could add a checkbox "Reset Between Loops" or something. It would add another "step" where every value is tweened to the initial value in 0 time.

But normally Tweens don't "reset" between loops and it has to be done manually. (also stop() can't be used here, because it resets loops)

InfiniteProductions commented 1 year ago

Is this really a problem? I guess we could add a checkbox "Reset Between Loops" or something. It would add another "step" where every value is tweened to the initial value in 0 time.

Not really but as far as I understand the design of the demo, starting "context" should be consistently the same and equal to the very first start, not halfway somewhere with a bunch of transforms kept from previous iteration.

But normally Tweens don't "reset" between loops and it has to be done manually. (also stop() can't be used here, because it resets loops)

By reset, I didn't mean something like even calling the reset function of the demo (I've tried that naively), just what I wrote above.

Imagine you have some demo and icon start always 100 px left of the initial location, soon it will be off-screen, which is not what people can interpret as loop.

KoBeWi commented 1 year ago

Well, yeah, loops aren't really intended for complex cutscene-like animations as in this demo. And they actually work somewhat the same as in AnimationPlayer - if you loop animation, the last frame will be interpolated towards the first frame. Looping an animation is not the same as starting it again.

InfiniteProductions commented 1 year ago

Tested PR #892, works great, thanks @KoBeWi