#animation #bevy #sprite #2d #complex #component #manage

micro_banimate

轻松管理复杂的Bevy 2D精灵动画

13个版本 (8个重大变更)

0.9.1 2024年7月9日
0.8.0 2024年2月24日
0.7.0 2023年11月5日
0.6.0 2023年7月29日
0.2.1 2022年11月14日

#139 in 游戏开发

Download history 1/week @ 2024-05-17 2/week @ 2024-05-24 96/week @ 2024-07-05 14/week @ 2024-07-12 63/week @ 2024-07-26 7/week @ 2024-08-02

每月93次下载

Apache-2.0

55KB
706

Bevy精灵动画

轻松管理复杂的2D精灵动画

快速入门

  • BanimatePluginGroup 添加到您的应用
  • 加载一个或多个动画集(请参阅以下如何定义文件中的动画集)
  • 使用 SpriteSheetBundle 生成一个实体并附加一个 SpriteAnimationBundle 组件,提供一个指向动画集的 Handle

代码示例已移至示例文件夹 - 克隆源代码并查看它们的作用!

动画类型

简单动画

待定:描述简单动画

  • 一个简单的循环动画,包含一组帧和帧率,不需要或提供控制

精灵动画

待定:描述精灵动画

  • 设置要播放的动画名称,播放动画。很简单。
  • 使用 AnimationOverride 临时中断当前动画

方向动画

待定:描述方向动画

  • 包括一个组件,用于根据其值更改正在播放的动画名称,表示方向

子动画

向实体添加 ChildAnimationBundle 将导致其实体状态与其 Parent 实体同步

动画集

动画集将名称映射到一系列帧和帧率。给定的动画在整个动画中有一个帧率,但不同的动画可以有不同的帧率(例如,“行走”动画可以每帧100ms播放,而“空闲”动画可以每帧250ms播放,但你不能在任一动画中设置单个帧的持续时间)。

一个 AnimationSet 可能包含许多动画,并且一个特定的 AnimationSet 很可能被附加到许多实体上。因此,动画使用 Asset 系统来避免传递相对较大的重复对象。提供了 JSONTOML 数据类型的加载器,但默认只启用 JSON。加载器不是必需的,因此如果希望使用其他方法创建 AnimationSet 资产,可以禁用它们。

使用 JSON 定义动画

启用 json_loader 功能后,您可以从具有 .anim.json 后缀的文件中加载一个动画集,如下所示

{
  "idle": {
    "frames": [
      1,
      2,
      3
    ],
    "frame_time": 250
  },
  "shoot_right": {
    "frames": [
      34,
      34,
      34,
      35,
      36
    ],
    "frame_time": 100
  }
}

使用 TOML 定义动画

启用 toml_loader 功能后,您可以从具有 .anim.toml 后缀的文件中加载一个动画集,如下所示

[idle]
frames = [1, 2, 3]
frame_time = 250

[shoot_right]
frames = [34, 34, 34, 35, 36]
frame_time = 100

兼容性

banimate 版本 bevy 版本 tilemap 版本
0.9.0 0.14 n/a
0.8.0 0.13 n/a
0.7.0 0.12 n/a
0.6.0-rc.1 0.11 55c15bfa43c7a9e2adef6b70007e92d699377454
0.5.x 0.10 0.10
0.5.x 0.10 0.10
0.2.x, 0.3.x, 0.4.x 0.9 0.9
0.1.x 0.8 0.8

依赖项

约 35-72MB
~1.5M SLoC