use bevy::{color::palettes::css::*, prelude::*}; fn main() { App::new() .add_plugins(DefaultPlugins) .insert_resource(ClearColor(WHITE.into())) .add_systems(Startup, setup_3d) .add_systems(Update, move_camera) .run(); } fn setup_3d( mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>, ) { commands.spawn(( Camera::default(), Camera3d::default(), Transform::default().looking_at(Vec3::new(0.0, -1.0, 0.0), Vec3::Y), AmbientLight { brightness: 160.0, ..default() }, )); commands.spawn(( Mesh3d(meshes.add(Cuboid::default())), MeshMaterial3d(materials.add(StandardMaterial { base_color: RED.into(), ..Default::default() })), Transform::from_xyz(0.0, -10.0, 0.0), )); commands.spawn(( Mesh3d(meshes.add(Cuboid::default())), MeshMaterial3d(materials.add(StandardMaterial { base_color: GREEN.into(), ..Default::default() })), Transform::from_xyz(0.0, -50.0, 0.0), )); commands.spawn(( Mesh3d(meshes.add(Cuboid::default())), MeshMaterial3d(materials.add(StandardMaterial { base_color: BLUE.into(), ..Default::default() })), Transform::from_xyz(0.0, -100.0, 0.0), )); } fn move_camera(keys: Res>, mut camera: Single<&mut Transform, With>) { const SPEED: f32 = 0.1; if keys.pressed(KeyCode::ArrowLeft) { camera.translation.z += SPEED; } else if keys.pressed(KeyCode::ArrowRight) { camera.translation.z -= SPEED; } if keys.pressed(KeyCode::ArrowUp) { camera.translation.x -= SPEED; } else if keys.pressed(KeyCode::ArrowDown) { camera.translation.x += SPEED; } }