JuiceBox is a visual animation system that uses a drag and drop interface to animate any game object.This ships with MEC free. If you have MEC Pro just re-import it after importing this package (or uncheck the MEC folder.)JuiceBox is a node-based object movement manager (OMM) that lets you build multi-step, multi-property animation sequences entirely in a visual graph editor. No Animator controllers, no animation clips, no timeline tracks, and no boilerplate code. Drop a single component on a GameObject, open the graph, and start connecting nodes.More than a tweening library. Most OMMs only offer tweening, which is a technique that was invented over fifty years ago to create animation for film. Tweens are fast and simple but they were designed for a medium where every frame is predetermined. Applied to a live game environment they have real limitations. First, tweening inherently follows a straight line: you can tween arbitrary line in 3D space, but moving through full 3D space requires hacking multiple tweens together. Second, a tween's start point, end point, and duration must all be known up front. If any of those change while the tween is running (because the player moved, a target shifted, or gameplay interrupted it) the motion breaks down or looks wrong.JuiceBox solves this by giving you the choice of which type of effect you want to use, even letting you mix and match them. The pro version extends the free version with the tools you need when animations stop being simple and start being systems. The free version covers the fundamentals: tweens, follows, shakes, and chaining them in a visual graph. Pro is for when your animations need to react to gameplay, share state across sequences, and be combined into anything you can imagine.Built for the gap between "I need a quick tween" and "I need a full Animator controller." When your game needs responsive, dynamic motion that reacts to what's happening and you don't want to maintain a state machine to get it.Five effect types cover the full range of game motion. Tweens interpolate between two known points with easing. Follows chase a moving target using velocity and spring physics. Shakes oscillate around the current value with a periodic waveform. Swings oscillate around a rest position with damped spring dynamics, like a pendulum losing energy. Waits hold the current value in place until a condition is met or another system signals them to continue.Control nodes snap onto effects to reshape their behavior without code. A CurveNode replaces any easing function with a hand-drawn animation curve. A SmoothingNode controls the frequency and damping of spring-based effects. A WindNode adds environmental drag and directional force so motion feels like it's happening in a medium, not a vacuum. A RandomNode injects randomness into any parameter; uniform, range, or Perlin noise are all supported, evaluated once per start or every frame. A ValueNode provides a typed constant (float, int, string, vector, quaternion, rect) directly in the graph, eliminating throwaway script fields.Parameter bindings turn static numbers into live values. Any numeric field on an effect (i.e. speed, duration, end condition threshold, and more) can be bound to a function on your own scripts that resolves at setup or every frame. Timescale can be bound per-sequence or per-animation, giving you slow-motion, pause, and reverse without touching the effects themselves.Runtime outputs and output combiners let multiple sequences drive the same property simultaneously. A follow that tracks the player and a shake that fires on damage can both write to the same transform, and the combiner merges their contributions automatically. Cross-sequence ValueNodes share state between sequences on the same component so one sequence can read what another produced.Animation definitions store sequence data in a ScriptableObject asset. Link it to any number of components and they all share the same graph. Edit once, update everywhere. Ideal for prefabs, enemy variants, or UI elements that reuse the same motion.Live preview plays your sequences in edit mode so you can tune timing and feel without entering play mode. OnComplete callbacks and sequence signals let animations trigger gameplay logic when they finish, not just the other way around.



