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

reactor_spatial

为Bevy提供一套2D空间工具,包括处理变换传播

1个稳定版本

1.0.0 2024年7月21日

960游戏开发

Download history 115/week @ 2024-07-17 34/week @ 2024-07-24

149 每月下载量
用于 2 crate

MIT/Apache

160KB
4.5K SLoC

reactor_spatial

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

核心类型

Position2D

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

Rotation2D

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

Scale2D

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

SpatialBundle2D

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

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

DrawOrder

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

传播类型

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

PositionPropagation

PositionPropagation枚举有两个变体

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

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

RotationPropagation

RotationPropagation枚举有两个变体

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

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

ScalePropagation

ScalePropagation枚举有两个变体

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

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

指南针

除了上述内容外,不包括在 SpatialBundle2D 中的还有 CompassCompassRoseCompassHalfwinds。在 2D 游戏中,为了选择绘制哪个精灵,通常需要知道给定实体面向的指南针方向。这些枚举可以作为组件包含在任何具有 Rotation2D 的实体上,并且作为变换传播的一部分,这些值将更新以匹配对象的旋转。

功能标志

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

用法

将包添加到您的 Cargo.toml 中。将 SpatialPlugin 添加到您的应用程序中。

依赖项

~38–76MB
~1.5M SLoC