在 bevy 示例中,breakout 仅使用矩形,有加载精灵的示例,还有加载 3d 网格的示例。在 2d 中,我想绘制一个三角形(或其他多边形),但我无法通过文档弄清楚。
问问题
1055 次
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 回答