fix: Incorrect camera minimum distance and start distance
This commit is contained in:
parent
2ae8f20e85
commit
caa57922bf
1 changed files with 15 additions and 6 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue