//! Shows how to animate material properties use bevy::prelude::*; fn main() { App::new() .add_plugins(DefaultPlugins) .add_systems(Startup, setup) .add_systems(Update, animate_materials) .run(); } fn setup( mut commands: Commands, asset_server: Res, mut meshes: ResMut>, mut materials: ResMut>, ) { commands.spawn(( Camera3d::default(), Transform::from_xyz(3.0, 1.0, 3.0).looking_at(Vec3::new(0.0, -0.5, 0.0), Vec3::Y), EnvironmentMapLight { diffuse_map: asset_server.load("environment_maps/pisa_diffuse_rgb9e5_zstd.ktx2"), specular_map: asset_server.load("environment_maps/pisa_specular_rgb9e5_zstd.ktx2"), intensity: 2_000.0, ..default() }, )); let cube = meshes.add(Cuboid::new(0.5, 0.5, 0.5)); const GOLDEN_ANGLE: f32 = 137.507_77; let mut hsla = Hsla::hsl(0.0, 1.0, 0.5); for x in -1..2 { for z in -1..2 { commands.spawn(( Mesh3d(cube.clone()), MeshMaterial3d(materials.add(Color::from(hsla))), Transform::from_translation(Vec3::new(x as f32, 0.0, z as f32)), )); hsla = hsla.rotate_hue(GOLDEN_ANGLE); } } } fn animate_materials( material_handles: Query<&MeshMaterial3d>, time: Res