1
1
use bevy:: {
2
2
app:: { Plugin , Startup , Update } ,
3
- asset:: AssetServer ,
4
- math:: { Rect , Vec2 } ,
5
- prelude:: { default, Commands , Component , Query , Res , With } ,
6
- sprite:: { Sprite , SpriteBundle } ,
3
+ asset:: { AssetServer , Assets , Handle } ,
4
+ math:: { Rect , UVec2 , Vec2 } ,
5
+ prelude:: { default, Commands , Component , Image , Query , Res , ResMut , Resource , With } ,
6
+ sprite:: { Sprite , SpriteBundle , TextureAtlas , TextureAtlasLayout } ,
7
7
time:: Time ,
8
8
transform:: components:: Transform ,
9
9
} ;
10
10
use bevy_rapier2d:: prelude:: * ;
11
11
12
12
use crate :: {
13
13
control:: { CharacterControlOffset , MapControlOffset } ,
14
- GameWorld , BLOCK_SIZE , CHARACTER_MOVEMENT_SPEED , PIXEL_PERFECT_LAYERS ,
14
+ GameWorld , BLOCK_SIZE , CHARACTER_MOVEMENT_SPEED , CHARACTER_SIZE , PIXEL_PERFECT_LAYERS ,
15
15
WORLD_BOTTOM_OFFSET_IN_PIXELS , WORLD_CENTER_COL ,
16
16
} ;
17
17
@@ -29,13 +29,21 @@ impl Plugin for CharacterPlugin {
29
29
}
30
30
}
31
31
32
- fn startup ( mut commands : Commands , asset_server : Res < AssetServer > , game_world : Res < GameWorld > ) {
32
+ fn startup (
33
+ mut commands : Commands ,
34
+ asset_server : Res < AssetServer > ,
35
+ game_world : Res < GameWorld > ,
36
+ mut texture_atlases : ResMut < Assets < TextureAtlasLayout > > ,
37
+ ) {
38
+ let atlas_layout = TextureAtlasLayout :: from_grid ( UVec2 :: new ( 16 , 16 ) , 8 , 5 , None , None ) ;
39
+ let atlas_layout_handle = texture_atlases. add ( atlas_layout) ;
40
+ let texture = asset_server. load ( "bgp_catdev/player_and_ui/Basic_Player.png" ) ;
33
41
commands. spawn ( (
34
42
Character {
35
43
movement_speed : CHARACTER_MOVEMENT_SPEED as f32 ,
36
44
} ,
37
45
SpriteBundle {
38
- texture : asset_server . load ( "character/idle/i2.png" ) ,
46
+ texture,
39
47
transform : Transform :: from_xyz (
40
48
( BLOCK_SIZE as f32 ) * 0.5 ,
41
49
( ( ( game_world. get_height_in_blocks ( WORLD_CENTER_COL ) as usize + 10 ) * BLOCK_SIZE )
@@ -45,28 +53,34 @@ fn startup(mut commands: Commands, asset_server: Res<AssetServer>, game_world: R
45
53
) ,
46
54
sprite : Sprite {
47
55
//anchor: bevy::sprite::Anchor::BottomCenter,
48
- custom_size : Option :: Some ( Vec2 :: new ( 14.0 , 30.0 ) ) ,
49
- rect : Some ( Rect {
50
- max : Vec2 :: new ( 520.0 , 540.0 ) ,
51
- min : Vec2 :: new ( 320.0 , 110.0 ) ,
52
- } ) ,
56
+ custom_size : Option :: Some ( Vec2 :: new ( CHARACTER_SIZE as f32 , CHARACTER_SIZE as f32 ) ) ,
53
57
..default ( )
54
58
} ,
59
+
55
60
..default ( )
56
61
} ,
62
+ TextureAtlas {
63
+ layout : atlas_layout_handle,
64
+ index : 0 ,
65
+ ..Default :: default ( )
66
+ } ,
57
67
RigidBody :: KinematicPositionBased ,
58
- Collider :: capsule_y ( 11.5 , 7. ) ,
68
+ Collider :: capsule_y ( ( CHARACTER_SIZE / 16 ) as f32 , ( CHARACTER_SIZE / 2 ) as f32 ) ,
59
69
KinematicCharacterController {
60
- custom_shape : Option :: Some ( ( Collider :: cuboid ( 7. , 15. ) , Vec2 :: new ( 0. , 5. ) , 0. ) ) ,
70
+ custom_shape : Option :: Some ( (
71
+ Collider :: cuboid ( ( CHARACTER_SIZE / 2 ) as f32 , ( CHARACTER_SIZE / 2 ) as f32 ) ,
72
+ Vec2 :: new ( 0. , 5. ) ,
73
+ 0. ,
74
+ ) ) ,
61
75
offset : CharacterLength :: Absolute ( 0.1 ) ,
62
76
autostep : Option :: Some ( CharacterAutostep {
63
- max_height : CharacterLength :: Relative ( 0.5 ) ,
77
+ max_height : CharacterLength :: Relative ( 0.4 ) ,
64
78
min_width : CharacterLength :: Relative ( 0.1 ) ,
65
79
..default ( )
66
80
} ) ,
67
81
slide : true ,
68
82
snap_to_ground : Option :: Some ( CharacterLength :: Absolute ( 0.1 ) ) ,
69
- normal_nudge_factor : 1. ,
83
+ normal_nudge_factor : 0.1 ,
70
84
..default ( )
71
85
} ,
72
86
//LockedAxes::ROTATION_LOCKED,
0 commit comments