#bevy #transform #propagation #2d #spatial #gamedev #game-engine

rantz_spatial2d

Bevy 的一个 2D 空间工具集,包括处理变换传播

15 个版本 (3 个重大变更)

3.1.2 2024 年 7 月 20 日
3.1.1 2024 年 7 月 9 日
2.0.0 2024 年 7 月 5 日
1.0.0 2024 年 7 月 5 日
0.2.3 2024 年 5 月 23 日

#241游戏开发

Download history 274/week @ 2024-05-20 448/week @ 2024-05-27 31/week @ 2024-06-03 11/week @ 2024-06-10 27/week @ 2024-06-17 165/week @ 2024-06-24 285/week @ 2024-07-01 317/week @ 2024-07-08 137/week @ 2024-07-15 22/week @ 2024-07-22 1/week @ 2024-07-29

每月下载量 489
用于 2 crates

MIT/Apache

160KB
4.5K SLoC

rantz_spatial2d

Bevy 游戏引擎的一个 2D 变换系统,支持变换传播控制。

核心类型

Position2D

Position2D 结构体表示空间中的 2D 点。它有两个字段:xy,分别代表点的笛卡尔坐标。

Rotation2D

Rotation2D 结构体表示 2D 旋转。它可以与弧度或度数一起使用。

Scale2D

Scale2D 结构体表示 2D 缩放。它有两个字段:xy,分别代表 x 和 y 轴的缩放因子。

SpatialBundle2D

SpatialBundle2D 结构体表示 2D 变换的空间状态。它包含一个 Position2DRotation2DScale2D。它提供了一个方便的方式来存储和操作游戏对象的空间状态。

当您将 SpatialBundle2D 添加到实体时,它还会自动添加一个 SpatialBundle,这使得使用 Bevy 的内置变换系统与空间 2D 系统变得很容易。

绘制顺序

DrawOrder 结构体用于指定游戏中实体的绘制层次。它是一个 f32 的包装器,值越高绘制在上层。

传播类型

以下枚举用于控制实体的空间组件如何传播到其子组件。

PositionPropagation

PositionPropagation 枚举有两个变体

相对: **[默认]** 子实体的位置相对于其父实体的位置。

绝对: 子实体的位置是绝对的,不考虑其父实体的位置。

RotationPropagation

RotationPropagation 枚举有两个变体

相对: **[默认]** 子实体的旋转相对于其父实体的旋转。

绝对:子实体的旋转是绝对的,不考虑其父实体的旋转。默认情况下,PositionPropagationRotationPropagation都设置为Relative

缩放传播

ScalePropagation枚举有两个变体

相对: **[默认]** 子实体的旋转相对于其父实体的旋转。

绝对:子实体的旋转是绝对的,不考虑其父实体的旋转。

指南针

除了上述内容,还包括但不限于SpatialBundle2DCompassCompassRoseCompassHalfwinds。在2D游戏中,通常需要知道特定实体面对的方向,以便选择要绘制的精灵。这些枚举可以作为具有Rotation2D的任何组件,并且在变换传播过程中,这些值将更新以匹配对象的旋转。

特性标志

  • serde - 为serde:Serializeserde:Deserialize添加实现。

用法

将crate添加到您的Cargo.toml

如果使用bevy,请将SpatialPlugin2D添加到您的应用程序中。

依赖项

约40-75MB
约1.5M SLoC