//! Illustrates how to rotate an object around an axis. use bevy::prelude::*; use std::f32::consts::TAU; // Define a component to designate a rotation speed to an entity. #[derive(Component)] struct Rotatable { speed: f32, } fn main() { App::new() .add_plugins(DefaultPlugins) .add_systems(Startup, setup) .add_systems(Update, rotate_cube) .run(); } fn setup( mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>, ) { // Spawn a cube to rotate. commands.spawn(( Mesh3d(meshes.add(Cuboid::default())), MeshMaterial3d(materials.add(Color::WHITE)), Transform::from_translation(Vec3::ZERO), Rotatable { speed: 0.3 }, )); // Spawn a camera looking at the entities to show what's happening in this example. commands.spawn(( Camera3d::default(), Transform::from_xyz(0.0, 10.0, 20.0).looking_at(Vec3::ZERO, Vec3::Y), )); // Add a light source so we can see clearly. commands.spawn(( DirectionalLight::default(), Transform::from_xyz(3.0, 3.0, 3.0).looking_at(Vec3::ZERO, Vec3::Y), )); } // This system will rotate any entity in the scene with a Rotatable component around its y-axis. fn rotate_cube(mut cubes: Query<(&mut Transform, &Rotatable)>, timer: Res