You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.6 KiB
Rust

use games::*;
fn main() {
App::new()
.add_plugins((BaseGamePlugin {
name: "parallax example".into(),
title: "Parallax".into(),
game_type: GameType::Two,
},))
.add_systems(Startup, spawn_background)
.add_systems(Update, move_camera)
.run();
}
fn spawn_background(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>,
server: Res<AssetServer>,
) {
commands.spawn((
Name::new("Depth: 1.0"),
Transform::default().with_translation(Vec3::new(0.0, 0.0, 0.0)).with_scale(Vec3::splat(50.0)),
Mesh2d(meshes.add(Circle::new(1.0))),
MeshMaterial2d(materials.add(ColorMaterial {
texture: Some(server.load("bevy.png")),
color: RED.into(),
..default()
})),
ParallaxDepth(1.0),
Visibility::Inherited,
));
commands.spawn((
Name::new("Depth: 2.0"),
Transform::default().with_translation(Vec3::new(0.0, 0.0, -1.0)).with_scale(Vec3::splat(25.0)),
Mesh2d(meshes.add(Circle::new(2.0))),
MeshMaterial2d(materials.add(ColorMaterial {
texture: Some(server.load("bevy.png")),
color: GREEN.into(),
..default()
})),
ParallaxDepth(2.0),
Visibility::Inherited,
));
commands.spawn((
Name::new("Depth: 4.0"),
Transform::default().with_translation(Vec3::new(0.0, 0.0, -2.0)).with_scale(Vec3::splat(12.5)),
Mesh2d(meshes.add(Circle::new(4.0))),
MeshMaterial2d(materials.add(ColorMaterial {
texture: Some(server.load("bevy.png")),
color: BLUE.into(),
..default()
})),
ParallaxDepth(4.0),
Visibility::Inherited,
));
commands.spawn((
Name::new("Depth: 8.0"),
Transform::default().with_translation(Vec3::new(0.0, 0.0, -3.0)).with_scale(Vec3::splat(6.25)),
Mesh2d(meshes.add(Circle::new(8.0))),
MeshMaterial2d(materials.add(ColorMaterial {
texture: Some(server.load("bevy.png")),
color: YELLOW.into(),
..default()
})),
ParallaxDepth(8.0),
Visibility::Inherited,
));
}
fn move_camera(mut t: Single<&mut Transform, With<Camera2d>>, keys: Res<ButtonInput<KeyCode>>) {
if keys.pressed(KeyCode::ArrowLeft) {
t.translation.x -= 5.0;
} else if keys.pressed(KeyCode::ArrowRight) {
t.translation.x += 5.0;
}
if keys.pressed(KeyCode::ArrowDown) {
t.translation.y -= 5.0;
} else if keys.pressed(KeyCode::ArrowUp) {
t.translation.y += 5.0;
}
}