1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- use bevy::prelude::*;
- #[derive(Component)]
- struct Rotator;
- fn main() {
- App::new()
- .add_plugins(DefaultPlugins)
- .add_systems(Startup, setup)
- .add_systems(Update, rotate)
- .run();
- }
- fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
- commands.spawn(Camera3dBundle {
- transform: Transform::from_xyz(0.0, 12.0, 18.0).looking_at(Vec3::ZERO, Vec3::Y),
- ..default()
- });
- commands.spawn(PointLightBundle {
- point_light: PointLight {
- shadows_enabled: true,
- ..default()
- },
- transform: Transform::from_xyz(4.0, 8.0, 4.0),
- ..default()
- });
- for x in 0..24 {
- for y in 0..24 {
- let x = x - 12;
- let y = y - 12;
- let z = if x == -12 || x == 11 || y == -12 || y == 11 || rand::random::<f32>() < 0.25 {
- 0.0
- } else {
- -2.0
- };
- let rotation = match rand::random::<u8>() % 4 {
- 0 => 0.0,
- 1 => 0.5,
- 2 => 1.0,
- _ => 1.5,
- } * std::f32::consts::PI;
- commands.spawn(
- SceneBundle {
- scene: asset_server.load("test-cube.glb#Scene0"),
- transform: Transform::from_xyz((x * 2) as f32, z, (y * 2) as f32).with_rotation(Quat::from_rotation_y(rotation)),
- ..default()
- }
- );
- }
- }
- }
- fn rotate(mut query: Query<&mut Transform, With<Rotator>>, time: Res<Time>) {
- for mut transform in &mut query {
- transform.rotate_y(time.delta_seconds() / 2.);
- }
- }
|