Also quick shoutout to Clockwork Raven for their amazing sprites as I am using them in the below examples!
This tool supports motion interpolation featuring position, scale and rotation. All of which can be used individually or together in a single action.
Position Tween / Interpolation:
Scale Tween / Interpolation:
Scaling can also be done non uniformly too! Very easy squish and stretch :D
Note: Sometimes position may need to be checked when scaling if it doesn't quite look right.
Rotation Tween / Interpolation:
Modify Existing Cels :
The tween machine can also tween layers that have animations already, such as this walking fox from Ansimuz.
Multi Tween Support:
Also supported with this tool is creating multiple tweens in one step. Simply select a or more sets of keyframes and your tween settings will be applied to each set of keyframes.
This tool also has support for image interpolation modifies existing frames instead of creating them. Image interpolation includes Hue, Saturation, Value, and Alpha. Each can be used together as well in a single action.
Hue Tween / Interpolation:
Fade In / Fade Out (Create In Reverse):
This option can be toggled if you want to tween in or out. Also note that if your first and last frame are the same using a position tween will simply fill in all cels in between so they can be modified.
Want your interpolation to feel less like a robot, moving at a constant speed? The tool has built in Easing Methods which will give you a better, smoother, and more natural feeling animation.
Linear- Like a robot, one constant speed from one keyframe to the next.
EaseIn- Picture a rocket starting slow and gradually getting up to speed.
EaseOut- Falling fast but gradually slowing to a stop at the end of the keyframe.
EaseInOut- Motion like a car, starting slow gradually getting up to speed and then slowing gradually to a stop.
Again shoutout to Ansimuz for this awesome little fox character.
How To Install / Update:
You will find the tool under the frame menu:
Frame > The Tween Machine...
Simply download and double click "the-tween-machine.aseprite-extension"
All of the files will be put where they need to be and will be overwritten if you are updating to a new version of the tool.
To open the tool, its located under the Frame menu:
Frame> The Tween Machine...
--Simple Usage License / Rights--
By using the script included with this file you understand that you are using it ASIS with no guarantees.
Though the script / toolbar is not intended to cause any harm, you understand that any such harm, such as lost of work, time or any other issues financial or otherwise, CarbsCode can not be held responsible. Always save your work regularly!
Please use at your own risk! If you change any of the script that may cause issues support may or may not be available. CarbsCode reserves the right to revise this license as needed.
Use this script as a toolbar to assist in Aseprite for personal and professional use.
Learn from the code within.
Make changes as you see fit for your use-case. However support may not be available for modified scripts so do so at your own risk.
Re-sell, transfer or distribute entire script or parts of this script that are unique and / or not featured on the Aseprite API website.
CarbsCode does not support NFTs and though he frowns upon the use of his tools for such works he understands that he can't stop users from doing so.
Though he asks kindly to please don't :)
Please report any bugs if you find some and Carbs will try and resolve as soon as possible!
Hope you all enjoy the tool! Please feel free to reach out or leave a comment if you have any issues or feedback!
For me doesn't work that well. Even on linear the position is not evenly distributed, either the last but one position are the same as the last when there's few frames, or it's a lot further back, then the last jumps suddenly when there's a lot of frames.
I tried to make my map travel 5 pixels each frame for 100 frames and adjusted the position of the last frame to be -500 and clicked "Create new tween cels", but then from 1 to 99 moves about 2 or 3 frames and at the last it jumps to -500.
I even simulated the same minecart scene from this GIF and got these problems and bugs. Needs a few tweaks and updates, but seems promising. I only tested position tween.
Oh thats no good! Sorry that you are running on to issues here. Hmm that does seems odd though! I will have to look in to this further. Is there any chance you would be able to attach a screen recorded gif or short video to show what is happening?
Also which version of aseprite are you using?
I appreciate the kind words though, it's def very complicated so it could be an issue in the math somewhere when using larger numbers but not exactly sure. If there is any chance you could send me a message or something I'd love to evaluate this more to figure out what is breaking lol
Thank you for posting btw! I want to make sure everything is working in any case so would love to figure this issue out haha
The first example is a map. The canvas is 400x100, but after animating I want to make it 100x100. I want the map to move 5 pixels each frame, and I need to move it -300 to be at it's final position at 100x100, so I made 300/5 which equals 60 (frames). But as you can see, it jumps from 59 to 60.
The second one is a similar to the minecart example you did, but as you can see the last two frames are in the same position.
Thank you for posting the video! This is very helpful :)
I think I see the issue, because the tween uses the layers center point to figure out which direction your moving it's getting confused when it can't see the full sprite any longer when it goes out of the canvas.
I will implement a fix for this to compensate automaticly though in the mean time if you increase your canvas so that everything can be seen over the duration of the frames and then crop your canvas back again it should work!
I'm also working on improving efficiency which will hopefully speed things up and hopefully solve any crashes from using too much memory, atleast I'm asuming that is what might be happening sometimes.
Expect an update soon! Again thank you for showing me the example it makes alot more sense seeing what is happening! Let me know if the canvas expansion trick works for this case :)
Ah shoot, my apologies, it looks like I might be using functionality that was added to the api in v1.2.31. Though if your able to upgrade to 1.2.39 this is the newest stable release at this point. Lots of bug fixes and stuff in there!