fix: Incorrect camera minimum distance and start distance

This commit is contained in:
Rendo 2026-08-05 19:10:31 +05:00
commit caa57922bf

View file

@ -2,6 +2,8 @@ use bevy::{input::mouse::{AccumulatedMouseMotion, AccumulatedMouseScroll}, prelu
use crate::grid::Grid;
use std::{f32::consts::FRAC_PI_2,ops::Range};
const MIN_DISTANCE: f32 = 1.;
pub struct GameCameraPlugin;
impl Plugin for GameCameraPlugin {
@ -57,7 +59,18 @@ pub fn camera() -> impl Scene {
center.z + grid.size.z as f32 * 1.2).looking_at(center, Vec3::Y))
}
)
CameraOrbit
template(
|ctx| {
let grid = ctx.resource::<Grid>();
let center = grid.size.as_vec3() * 0.5;
Ok(CameraOrbit {
distance: vec3(
center.x + grid.size.x as f32 * 1.2,
grid.size.y as f32 * 1.2,
center.z + grid.size.z as f32 * 1.2).length(),
..default()
})
})
}
}
@ -97,12 +110,8 @@ pub fn orbit(
}
let center = grid.size.as_vec3() * 0.5;
let min_distance = vec3(
center.x + grid.size.x as f32 * 1.2,
grid.size.y as f32 * 1.2,
center.z + grid.size.z as f32 * 1.2).length();
orbit.distance = (orbit.distance-mouse_scroll.delta.y).max(min_distance);
orbit.distance = (orbit.distance-mouse_scroll.delta.y).max(MIN_DISTANCE);
transform.translation = center + orbit.center_offset -transform.forward() * orbit.distance;
}