This is a requested how-to for my FPSI easing block. Requirements: - This block returns its values to a local variable named "ouput," so the movement needs to be mapped onto the sprite using that variable. - The project timer needs to be running. - This block runs instantaneously and therefore needs to be placed in a loop in order to return values. It is not a standalone easing block. → Click on the block's components onscreen for a short overview of each. Or read the guide below: In/Out: ▾ - Type "in" for in-easing (the output speeds up toward the terminal value). - Type "out" for out-easing (the ouput slows down as it approaches the terminal value). - There is no in-out-easing function; use the chain function for that (described below). Initial value (I) ▾ - This is the value that will be returned any time before the easing begins. This is the starting value. Terminal value (T): ▾ - This is the value that will return any time after the easing ends; the final value. - For example, if you want to ease from 0 to 100, you would put "0" for I and "100" for T. Power (N): ▾ - Polynomial easing requires a degree. The degree governs the steepness/sharpness of the ease curve. - For movement that begins very slowly then speeds up rapidly toward the terminal value, choose a larger value for N. - As a general rule, keep the range between 0 and 10—decimal values need not be used unless you need that kind of control (you don't). - Cheat guide: ㅤN=0: No easing. The initial value will suddenly switch to the terminal value after the "ease" has ended. ㅤN=1: A straight easing curve—neither in nor out easing (direct path). ㅤN=2: Slight easing ㅤN=10: An approximate exponential (e^x) easing—steep easing. - The direction of the steepness depends on whether you're using in or out easing, control this using the first input ("In/Out" above). Initial keyframe (KF1): ▾ - If you use a list of keyframes, this is the way to map your movement onto your sync points. Indicate which keyframe the ease should begin at. Initial delay (D1): ▾ - This marks when the ease will begin past the initial keyframe (or before, if you input a negative value). The units are in seconds. Terminal keyframe (KF2): ▾ - This indicates the keyframe reference for when the easing will end. Terminal delay (D2): ▾ - This marks when the ease will end past the terminal keyframe. The units are in seconds. Block chain: ▾ - This feature allows for multiple easings to be applied on a single variable at different times. (For example, I can chain two movements of my sprite's x position so that, after one x-easing, another can occur later.) - Enable block chain by placing a green "not<>" operator block into the "chain?" space. - When chain is enabled, the initial and terminal values only return at the moment easing begins and stops, respectively. This means that the block will only work between the beginning and end time: before the initial time, the block WON'T return any values. The block will still return the terminal value (T) after the terminal time has been reached. - Rules for proper block-chaining: ㅤThe block at the top of the chain should be unchained (leave it disabled). ㅤThe lower blocks take precedence. So if any of the time intervals on the blocks in the chain conflict, the lower block will override and run against the others. ㅤTip: Keep the time intervals in order! Place blocks that need to run earlier on top. Run the blocks consecutively top-down. Example: ▾ - I want to do a steep ease-in of my sprite's x-position from x=50 to x=-120. I set it up like this: ↔️ Ease (in) (50) (-120) power: (10) keyframe: (1) (-1) (1) (0) <> (For the above example, easing begins one second before keyframe 1 and ends when the time is at keyframe 1.) - Then, I set my sprite's x-position to the variable "output" and make sure the x-position is continually being set while the ease is working. Done! That's all. Feel free to ask any questions for clarification. Q: Can cam control use easing? Does there need to be a separate block for it if so? A: I do use the easing for things like camera rotations, as well as easing in and out of the sync points. You can take a look at this for reference: (see "Set camera" and "Cam movement" define blocks) Q: Why isn't there an in-out easing option (like Panzoid)? A: It's less controllable: if you wanted the midpoint of the in-out ease to be at a certain point, you'd need to set the initial and terminal times correctly so that their time midpoint is the desired point—using the chain feature is much better. Q: What's the difference between easing and just using a smooth glide block (like in intro tutorials)? A: The glide block shown in most intro tutorials only performs ease-out easing. Ease-in's using a smooth glide-style script is possible, but it's harder to control output values that way, and there are less options for things like keyframing and power. Edited 8/26/24.