mcpField
U
universal-tool

universal-tool

github.com/dylantarre设计与 UI132488 次安装43 周前更新
代码仓库

关于 universal-tool

一项面向不同工具和框架的动画设计技能,讲解如何应用 12 条迪士尼动画原则,并提供动作、时序和缓动建议。

主要功能

  1. 01涵盖 12 条动画原则
  2. 02挤压伸展与预备动作技巧
  3. 03时序与缓动参考
  4. 04UI 与特效动画建议
  5. 05动画发布前检查清单

适用场景

  1. 01设计 UI 转场与反馈
  2. 02规划粒子和特效动作
  3. 03发布前检查动画

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dylantarre/animation-principles --skill universal-tool

安装后在 Claude Code 中输入/universal-tool确认已加载。

详细介绍

通用动画原则

无论使用何种工具或框架,都应遵循迪士尼的全部 12 条动画原则。

1. 挤压与拉伸

概念:物体在运动时会发生形变,同时保持体积不变。

实现方式:

  • 压缩一个轴时,拉伸另一个轴
  • scaleX * scaleY ≈ constant
  • 在撞击、加速或减速时应用

数值:压缩至 80%,拉伸至 120%

2. 预备动作

概念:让观众为即将发生的动作做好准备。

实现方式:

  • 先朝主要动作的相反方向移动
  • 预备动作约占总时长的 20%
  • 动作越快,预备动作越小

模式:预备 → 动作 → 稳定

3. 演出布局

概念:引导观众注意重要内容。

实现方式:

  • 模糊或淡化背景元素
  • 放大焦点
  • 运用对比(颜色、大小、运动)
  • 一次只呈现一个明确动作

4. 逐帧动画/关键姿势动画

逐帧动画:按顺序逐帧制作动画。适用于流畅、有机的运动。

关键姿势动画:先定义关键姿势,再补齐中间帧。适用于精确、经过规划的运动。

建议:UI 使用关键姿势动画,粒子和特效使用逐帧动画。

5. 跟随动作与重叠动作

概念:不同部分以不同速度运动。

实现方式:

  • 错开子元素的时间
  • 为次要元素添加 2-5 帧延迟
  • 较轻或较松的部分会滞后
  • 为每个元素使用不同曲线的缓动

6. 慢入与慢出

概念:自然运动会加速和减速。

实现方式:

  • 大多数运动使用 ease-in-out
  • 进入时使用 ease-out(柔和地到达)
  • 退出时使用 ease-in(自然地离开)
  • 仅机械运动使用线性动画

常用曲线:cubic-bezier(0.42, 0, 0.58, 1)

7. 弧线运动

概念:自然运动沿曲线路径进行。

实现方式:

  • 有机元素应避免直线运动
  • 使用运动路径或多点关键帧
  • 抛出物体使用抛物线
  • 摆动使用钟摆弧线

8. 次要动作

概念:辅助动作能强化主要动作。

实现方式:

  • 添加与主要动作相辅相成的细微运动
  • 示例:头发弹动、阴影移动、粒子效果
  • 不应分散观众对主要动作的注意力
  • 比主要动作稍晚发生

9. 时间

概念:速度传达重量、情绪和角色特征。

时长感受使用场景
50-150ms干脆利落微交互
150-300ms响应灵敏按钮反馈
300-500ms平滑页面过渡
500-800ms从容模态框显现
1000ms+戏剧化主视觉动画

10. 夸张

概念:突破现实效果,增强表现力。

实现方式:

  • 将运动幅度放大至细微效果之上 20-50%
  • 先越过目标位置,再稳定下来
  • 夸张程度越高,效果越卡通
  • UI:采用细微夸张(超出目标位置 5-15%)

11. 扎实绘制

概念:在 3D 空间中保持体积感和重量感。

实现方式:

  • 考虑三个维度
  • 保持透视一致
  • 变换过程中保留体积感
  • 使用阴影让元素显得稳固

12. 吸引力

概念:让动画令人愉悦、引人入胜。

实现方式:

  • 使用平滑曲线,而非尖锐角度
  • 保持时间节奏一致
  • 提供清晰的视觉反馈
  • 让交互响应令人满意
  • 在可预期与惊喜感之间取得平衡

通用时间参考

Micro-interaction: 100-200ms
Standard feedback: 200-300ms
Content transition: 300-400ms
Page transition: 400-600ms

通用缓动参考

Enter screen: ease-out (decelerate)
Leave screen: ease-in (accelerate)
On-screen movement: ease-in-out
Bounce/overshoot: spring physics or elastic

检查清单

发布动画前:

  • 是否使用了缓动(而非线性动画)?
  • 时长是否适合该动作?
  • 自然情况下是否遵循弧线运动?
  • 重要动作是否有预备动作?
  • 次要元素是否稍有延迟?
  • 焦点是否明确?
  • 动画是否令人满意?

评论

支持 Markdown