Files
down_into_the_void/src/camera.rs
T
2026-09-18 17:40:57 +02:00

32 lines
893 B
Rust

use bevy::prelude::*;
use crate::player::Player;
use crate::player::move_player;
#[derive(Component)]
pub struct MainCamera;
fn spawn_main_camera(mut commands: Commands) {
commands.spawn((Camera2d, MainCamera));
}
// Follow the player with the camera
fn follow_player(
player: Single<&Transform, (With<Player>, Without<MainCamera>)>,
mut camera: Single<&mut Transform, (With<MainCamera>, Without<Player>)>,
// time: Res<Time>,
) {
camera.translation.y = player.translation.y; // without delay
// camera.translation.y = camera.translation.y
// + (player.translation.y - camera.translation.y) * 3.0 * time.delta_secs(); // with delay
}
pub struct CameraPlugin;
impl Plugin for CameraPlugin {
fn build(&self, app: &mut App) {
app.add_systems(Startup, spawn_main_camera)
.add_systems(Update, follow_player.after(move_player));
}
}