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

问题描述

我正在使用Bevy游戏引擎。

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

有没有一种方法可以获取实体相对于世界原点(而不是实体父实体)的位置?

解决方法

“世界”位置存储在GlobalTransform组件中。内部转换是4x4矩阵,其中transform()函数返回位置。您可以这样访问它:

fn system(global_transform: &GlobalTransform) {
  let position = global_transform.translation(); 
}