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.
56 lines
1.6 KiB
Rust
56 lines
1.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)
|
|
.add_systems(Update, parallax_gizmos)
|
|
.run();
|
|
}
|
|
|
|
fn spawn_background(
|
|
mut commands: Commands,
|
|
) {
|
|
commands.spawn((Parallax(1.0), children![(Text2d("1.0".into()), Transform::from_xyz(0.0, 35.0, 0.0))]));
|
|
commands.spawn((Parallax(2.0), children![(Text2d("2.0".into()), Transform::from_xyz(0.0, 35.0, 0.0))]));
|
|
commands.spawn((Parallax(4.0), children![(Text2d("4.0".into()), Transform::from_xyz(0.0, 35.0, 0.0))]));
|
|
commands.spawn((Parallax(8.0), children![(Text2d("8.0".into()), Transform::from_xyz(0.0, 35.0, 0.0))]));
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
fn parallax_gizmos(
|
|
mut gizmos: Gizmos,
|
|
q: Query<&Transform, With<Parallax>>,
|
|
) {
|
|
// Closest to camera
|
|
// Parallax(1)
|
|
q.iter().for_each(|t| {
|
|
gizmos.grid_2d(
|
|
t.translation.truncate(),
|
|
UVec2::new(5, 5),
|
|
Vec2::splat(10.),
|
|
RED,
|
|
).outer_edges();
|
|
});
|
|
}
|