问题标签 [bevy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1002 浏览

rust - 如何在不消耗 Bevy 事件的情况下读取它们?

我目前正在尝试使用事件来表示角色何时在我的 Bevy 游戏中跳跃。我希望处理玩家输入的系统发送一个JumpedEvent然后其他系统可以接收它以执行适当的操作(设置正确的玩家动画、速度、声音等),但第一个读取事件的系统会消耗它。

Bevy 是否提供了一种无需消费即可读取事件的方法?

这是我当前的代码:

0 投票
1 回答
639 浏览

rust - 如何迭代 Bevy 查询并保留对迭代值的引用,以便我以后可以使用它?

我在empty变量中有一个借用,我想延长它的寿命。在注释的代码块中,我尝试解决它,但参考不再可用。我必须再次遍历循环才能找到匹配项才能对其采取行动。

如何遍历查询以寻找最佳匹配,然后在我知道它是最佳匹配后对其进行操作,而无需循环再次找到它?

货物.toml:

具体错误:

0 投票
1 回答
709 浏览

bevy - 如何在bevy中获取子实体的绝对位置?

我正在使用 Bevy 游戏引擎。

在 Bevy 中将变换传播给孩子的能力很方便,但是当我在游戏中执行碰撞检查时,我一直在使用对象Translation来计算它的位置。现在我的场景中有一些父子层次结构,Translation每个子实体的 都相对于其父实体。

有没有办法获得实体相对于世界原点的位置,而不是实体的父级?

0 投票
0 回答
1521 浏览

rust - 如何在没有 GPU 的情况下使用默认插件运行 Bevy 应用程序?

我的笔记本电脑没有专用 GPU。我在这台具有集成 GPU 的笔记本电脑上运行基本 OS 5 。当我尝试运行初学者的 Bevy 应用程序时,

我收到以下错误 -

我已经为我的 GPU 安装并升级了驱动程序。的输出

包含该行

我安装了 vulkan,错误现在被替换为 -

0 投票
1 回答
179 浏览

rust - 为什么我在 Bevy 中进行变更检测的尝试从未触发?

我不确定我是否混淆了 Bevy 的变更检测系统的功能,或者我只是做错了。但是,在尝试检测更改时,我只会在组件生成时收到通知。

下面,我spawn是一个元组Group,Size(2)。然后,sizequery每帧运行一次,直到大小为 5。这一次,groupsize只运行一次,大小为 2。这是为什么呢?

货物.toml:

0 投票
1 回答
894 浏览

bevy - 如何在 Bevy 系统中进行嵌套查询?

我正在和 Bevy 一起制作一个小机器人玩具,每个机器人的速度/加速度取决于它周围的机器人的位置和速度值。这意味着对于每个 boid,我想运行一些依赖于其他 boid 的某个子集的逻辑。

这似乎基本上是一个嵌套的for循环:

但是,我不确定如何使用 Bevy 中的查询来执行此操作。假设我有一个系统move_boids

我收到类似这样的错误,因为我query在两个循环中都在可变地借用:

我不能对同一个查询进行嵌套迭代,所以我不确定获取每个 boid 周围 boid 信息的最佳方法。我应该将每个 boid 的位置和速度信息从第一个查询复制到 aHashMap<Entity, BoidData>中,然后在其中进行查找吗?还有什么更惯用的我可以做的吗?

0 投票
1 回答
282 浏览

user-interface - 如何在bevy中明确描述具有绝对定位的UI元素的Z顺序?

我有以下情况:

  • 一个 parent Node,占用所有屏幕空间。
    • 顶栏的孩子。
    • 一个孩子为游戏区。
    • 底部栏的孩子。
    • 叠加层的绝对定位子代,不得绑定到上述三个。

我不能完全让上面的​​工作,因为我找不到一种方法来定义孩子的 z 顺序,至少使用默认的 UiCameraComponents。这是我尝试过的:

  • 向绝对定位的子元素添加一个Translation组件并将其向上移动 Z 轴。
  • 在 Z 轴上给绝对定位的孩子一个更高的变换。
  • 以不同的顺序生成节点。

似乎覆盖子始终呈现在相对定位的兄弟姐妹之后。

0 投票
1 回答
441 浏览

rust - 更高等级的特征界限和函数参数

我试图了解 Bevy 的IntoForEachSystemtrait的实现以及它与底层 HecsQueryFetchtraits交互的方式。Hecs 具有查询类型(您在调用中请求的内容query::<T>)和项目类型(查询返回的内容)。这个想法是IntoForEachSystem为查询类型与查询的项目类型匹配的闭包实现的,并且fn f(&i32)因为&i32查询返回一个&i32项目而起作用。

我想我在这个片段中提取了设计的相关部分,但我无法对其进行类型检查:

错误:

我认为编译器将推断的生命周期'r视为fn hmm<'r>(&'r i32)不同于'a. type Fetch: for<'a> Fetch<'a>我没有看到 Bevy 用来实现相同目标的技巧。

0 投票
1 回答
423 浏览

rust - 是否可以在不直接将 World 与线程本地系统一起使用的情况下向实体添加一个或多个子级?

我有一个Entity和一个BundleComponents想附加到一个将成为第一个实体的子实体的实体。我可以用Commands我的组件生成一个实体,但我无法得到它的实际Entity值,这意味着我不能直接构造Children组件。如果我使用该World资源并使我的系统线程本地化,我可以在Entity生成它时获取我的子实体,然后使用它来制作Child组件,并将其添加到第一个实体。我无法让线程本地系统正常工作,而且对于应该是一个简单而常见的操作来说,它们似乎太过分了。

有什么方法可以使用常规系统将子实体添加到另一个实体?

澄清一下,这就是我的理想语法:

0 投票
0 回答
228 浏览

bevy - 如何在 Bevy 中围绕本地原点旋转 3d 网格

因此,当我使用旋转功能时,在 Bevy 中似乎 3d 对象围绕全局原点旋转。我当前的解决方案如下,我首先将对象位置设置为全局原点,旋转它,然后将其移回原来的位置:

这是正确的解决方案还是有更好的方法?

这似乎是一个相关的拉取请求:https ://github.com/bevyengine/bevy/pull/564