init
This commit is contained in:
+52
@@ -0,0 +1,52 @@
|
||||
use bevy::{camera::ScalingMode, color::palettes::css::GREEN, prelude::*};
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
.add_plugins(DefaultPlugins)
|
||||
.add_systems(Startup, setup)
|
||||
.add_systems(Update, sprite_movement)
|
||||
.add_systems(Update, draw_gizmo)
|
||||
.run();
|
||||
}
|
||||
|
||||
#[derive(Component)]
|
||||
enum Direction {
|
||||
Left,
|
||||
Right,
|
||||
}
|
||||
|
||||
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
let mut projection = OrthographicProjection::default_2d();
|
||||
projection.scaling_mode = ScalingMode::AutoMin {
|
||||
min_width: 1920.,
|
||||
min_height: 1080.,
|
||||
};
|
||||
commands.spawn((Camera2d, Projection::Orthographic(projection)));
|
||||
|
||||
commands.spawn((
|
||||
Sprite::from_image(asset_server.load("icon.png")),
|
||||
Transform::from_xyz(0., 0., 0.),
|
||||
Direction::Right,
|
||||
));
|
||||
}
|
||||
|
||||
/// The sprite is animated by changing its translation depending on the time that has passed since
|
||||
/// the last frame.
|
||||
fn sprite_movement(time: Res<Time>, mut sprite_position: Query<(&mut Direction, &mut Transform)>) {
|
||||
for (mut logo, mut transform) in &mut sprite_position {
|
||||
match *logo {
|
||||
Direction::Right => transform.translation.x += 150. * time.delta_secs(),
|
||||
Direction::Left => transform.translation.x -= 150. * time.delta_secs(),
|
||||
}
|
||||
|
||||
if transform.translation.x > 200. {
|
||||
*logo = Direction::Left;
|
||||
} else if transform.translation.x < -200. {
|
||||
*logo = Direction::Right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_gizmo(mut gizmos: Gizmos) {
|
||||
gizmos.rect_2d(Isometry2d::IDENTITY, Vec2::new(1920., 1080.), GREEN);
|
||||
}
|
||||
Reference in New Issue
Block a user