8 个版本 (破坏性更新)

0.7.0 2024年7月8日
0.6.0 2024年5月7日
0.5.0 2024年4月4日
0.4.0 2024年4月2日
0.1.0 2023年11月13日

#2181 in 游戏开发

MIT/Apache

54KB
602

Build Status Latest Version Rust Documentation Rust Documentation

Tnua - Bevy 的角色控制器。

Tnua (希伯来语中意为“运动”)是一个浮动角色控制器,这意味着角色不再始终接触地面,而是悬浮在空中,这使得许多运动控制方面变得更加简单。

Tnua 可以使用 RapierAvian(以前称为 XPBD),并通过集成 crate 支持两者的 2D 和 3D 版本。

注意:

  • 需要 集成 crate(bevy-tnua<physics-backend>)和主 bevy-tnua crate,并且需要添加两个 crate 的主插件。
  • 如果您使用的是具有双精度(例如带有 f64 标志的 Avian)的物理后端,则需要将 f64 标志添加到所有 Tnua crate 中。这适用于由物理后端定义的双精度数据 - Bevy 本身仍然使用单精度,并且这是位置和旋转将使用的精度。

特性

  • 支持 Rapier 和 Avian 的 2D 和 3D 版本
  • 运行
  • 跳跃
  • 蹲下
  • 可变高度跳跃
  • 狐狸时间
  • 跳跃缓冲区
  • 在斜坡/楼梯上上下跑
  • 倾斜校正
  • 移动平台
  • 旋转平台
  • 动画辅助工具(不是动画本身,但Tnua提供了帮助选择播放哪个动画的功能)
  • 通过平台跳跃/下落
  • 空中动作

演示

演示中的基础和动作可以通过GUI进行调整。它们被初始化为Tnua提供的Default::default(),但有以下例外

  • TnuaBuiltinWalk::desired_velocity默认为零向量,但当用户移动角色时,它被设置为长度为20.0的向量(2D演示中为40.0)
  • TnuaBuiltinWalk::float_height被设置为2.0,即使默认值为0.0。用户代码应根据模型几何设置浮点高度。
  • TnuaBuiltinWalk::max_slope被设置为$\frac{\pi}{4}$,即使默认值为$\frac{\pi}{2}$(这将禁用滑动行为,因为这是墙的斜率角度)
  • TnuaBuiltinJump::height被设置为4.0,即使默认值为0.0。用户代码应根据游戏需求设置跳跃高度(零高度跳跃动作是无用的)
  • TnuaBuiltinCrouch::float_offset被设置为-0.9,即使默认值为0.0。就像float_height一样,这个值应根据模型几何由用户代码设置。
  • TnuaBuiltinDash::displacement默认为0.0,但当用户输入冲刺命令时,它被设置为长度为10.0的向量。

在本地运行演示

$ cargo run --bin <demo-name> --features <physics-backend>

其中<demo-name>是演示名称,<physics-backend>rapier2drapier3davian2davian3d之一。请确保后端(2D或3D)的维度与演示的维度相匹配。例如,要使用Avian运行3D平台游戏,请使用此方法

$ cargo run --bin platformer_3d --features avian3d

演示代码中的有趣部分

版本

Tnua被分成不同的crate,分别更新,因此这里分为多个表格。bevy-tnua-physics-integration-layer的版本必须与主bevy-tnua crate和集成crate相同。

主要

bevy bevy-tnua-physics-integration-layer bevy-tnua
0.14 0.4 0.19
0.13 0.3 0.16-0.18
0.13 0.2 0.15
0.12 0.1 0.13-0.14

Rapier集成

bevy bevy-tnua-physics-integration-layer bevy-tnua-rapier bevy_rapier
0.14 0.4 0.7 0.27
0.13 0.3 0.6 0.26
0.13 0.3 0.4, 0.5 0.25
0.13 0.2 0.3 0.25
0.12 0.1 0.2 0.24
0.12 0.1 0.1 0.23

Avian集成

bevy bevy-tnua-physics-integration-layer bevy-tnua-avian avian
0.14 0.4 0.1 0.1

XPBD集成

由于bevy_xpbd项目已被重新命名为"Avian",因此将不再收到任何更新。

bevy bevy-tnua-physics-integration-layer bevy-tnua-xpbd bevy_xpbd
0.14 0.4 0.5 0.5
0.13 0.3 0.3, 0.4 0.4
0.13 0.2 0.2 0.4
0.12 0.1 0.1 0.3

预分割

bevy bevy-tnua bevy_rapier
0.12 0.12 0.23
0.11 0.8 - 0.11 0.22
0.10 0.1 - 0.7 0.21

参考材料

以下用于编写Tnua的数学和物理代码

替代方案

  • bevy_mod_wanderlust - 这个mod的原始灵感,也是我从那里获取浮球视频的地方。我最终创建了自己的插件,因为bevy_mod_wanderlust不支持2D。
  • Rapier本身有一个角色控制器。它不是一个浮动的角色控制器,但它与物理引擎集成,并利用这个优势来解决浮动物理模型所解决的问题。

许可证

根据您的要求,许可为以下之一

贡献

除非您明确声明,否则您提交的任何贡献,根据Apache-2.0许可证定义,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~40–77MB
~1.5M SLoC