1
- use bevy:: { input:: mouse:: MouseWheel , prelude:: * } ;
2
1
use avian2d:: prelude:: * ;
2
+ use bevy:: { input:: mouse:: MouseWheel , prelude:: * } ;
3
3
4
4
pub struct CameraPlugin ;
5
5
@@ -14,8 +14,12 @@ pub struct MainCamera;
14
14
impl Plugin for CameraPlugin {
15
15
fn build ( & self , app : & mut App ) {
16
16
app. add_systems ( Startup , setup_main_camera) ;
17
- app. add_systems ( PostUpdate , update_camera. after ( PhysicsSet :: Sync )
18
- . before ( TransformSystem :: TransformPropagate ) ) ;
17
+ app. add_systems (
18
+ PostUpdate ,
19
+ update_camera
20
+ . after ( PhysicsSet :: Sync )
21
+ . before ( TransformSystem :: TransformPropagate ) ,
22
+ ) ;
19
23
app. add_systems ( Update , zoom_camera) ;
20
24
}
21
25
}
@@ -30,7 +34,6 @@ fn update_camera(
30
34
mut camera_query : Query < & mut Transform , ( With < MainCamera > , Without < CameraTarget > ) > ,
31
35
target_query : Query < & Transform , ( With < CameraTarget > , Without < MainCamera > ) > ,
32
36
) {
33
-
34
37
let Ok ( mut camera) = camera_query. get_single_mut ( ) else {
35
38
error ! ( "could not execute query for single MainCamera component" ) ;
36
39
return ;
@@ -41,10 +44,8 @@ fn update_camera(
41
44
return ;
42
45
} ;
43
46
44
-
45
47
let Vec3 { x, y, .. } = target. translation ;
46
48
47
-
48
49
let direction = Vec3 :: new ( x, y, camera. translation . z ) ;
49
50
50
51
camera. translation = direction;
@@ -61,12 +62,10 @@ fn zoom_camera(
61
62
//Amount to zoom in this update cycle
62
63
let mut zoom_amount = 0.0 ;
63
64
64
-
65
65
for event in scroll_event. read ( ) {
66
66
zoom_amount += -event. y * zoom_factor
67
67
}
68
68
69
-
70
69
if zoom_amount != 0.0 {
71
70
for mut projection in camera. iter_mut ( ) {
72
71
projection. scale += zoom_amount;
0 commit comments