3

在 bevy 示例中,breakout 仅使用矩形,有加载精灵的示例,还有加载 3d 网格的示例。在 2d 中,我想绘制一个三角形(或其他多边形),但我无法通过文档弄清楚。

4

2 回答 2

2

目前不支持 2D 中的“绘图”。这正在研究中,但还没有。

于 2020-08-29T18:48:32.937 回答
0

不知道这是否仍然相关,但今天我在这里遇到了同样的问题是我如何能够绘制简单的 trianle

fn create_triangle() -> Mesh {
    let mut mesh = Mesh::new(PrimitiveTopology::TriangleList);
    mesh.set_attribute(
        Mesh::ATTRIBUTE_POSITION,
        vec![[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0]],
    );
    mesh.set_attribute(Mesh::ATTRIBUTE_COLOR, vec![[0.0, 0.0, 0.0, 1.0]; 3]);
    mesh.set_indices(Some(Indices::U32(vec![0, 1, 2])));
    mesh
}

这将创建一个三角形网格。对我来说,棘手的部分是要弄清楚默认情况下三角形是透明的,并且应该为顶点设置 alfa 值。稍后您可以在系统中使用此网格生成函数,如下所示:

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<ColorMaterial>>
) {
    commands.spawn_bundle(OrthographicCameraBundle::new_2d());
    commands.spawn_bundle(MaterialMesh2dBundle {
    mesh: meshes.add(create_triangle()).into(),
    transform: Transform::default().with_scale(Vec3::splat(128.)),
    material: materials.add(ColorMaterial::from(Color::PURPLE)),
    ..Default::default()
});

}

于 2022-02-06T18:10:05.753 回答