from dataclasses import dataclass
from pybevy.prelude import *
@component
@dataclass
class Direction(Component):
LEFT: int = 0
RIGHT: int = 1
def setup(commands: Commands, asset_server: Res[AssetServer]) -> None:
commands.spawn(Camera2d())
image = asset_server.load_image("icon.png")
direction = Direction()
direction.RIGHT = True
direction.LEFT = False
commands.spawn(
Sprite.from_image(image),
Transform.from_xyz(0.0, 0.0, 0.0),
direction,
)
def sprite_movement(
time: Res[Time],
sprite_query: Query[tuple[Mut[Direction], Mut[Transform]]],
) -> None:
for direction, transform in sprite_query:
if direction.RIGHT:
transform.translation.x += 150.0 * time.delta_secs()
else: transform.translation.x -= 150.0 * time.delta_secs()
if transform.translation.x > 200.0:
direction.LEFT = True
direction.RIGHT = False
elif transform.translation.x < -200.0:
direction.LEFT = False
direction.RIGHT = True
@entrypoint
def main(app: App) -> App:
return (
app.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.add_systems(Update, sprite_movement)
)
if __name__ == "__main__":
main().run()