docs/screenshot.png
+0
-0
diff --git a/docs/screenshot.png b/docs/screenshot.png
index f9ee6e0..1966d3b 100644
Binary files a/docs/screenshot.png and b/docs/screenshot.png differ
src/dog.rs
+10
-1
diff --git a/src/dog.rs b/src/dog.rs
index 3e0addc..00f86ab 100644
@@ -10,6 +10,7 @@ use bevy::{
gltf::GltfAssetLabel,
math::{Dir3, Vec3, primitives::InfinitePlane3d},
scene::SceneRoot,
time::Time,
transform::components::{GlobalTransform, Transform},
window::Window,
};
@@ -28,6 +29,8 @@ impl DogSystems for App {
#[derive(Component, Default)]
struct Dog;
const SPEED: f32 = 10.0;
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn((
SceneRoot(asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/animal-dog.glb"))),
@@ -39,6 +42,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
fn control(
window: Single<&Window>,
camera: Single<(&Camera, &GlobalTransform)>,
time: Res<Time>,
mut dog: Single<&mut Transform, With<Dog>>,
) {
let (camera, camera_transform) = *camera;
@@ -56,5 +60,10 @@ fn control(
return;
};
dog.look_at(-cursor_position, Vec3::Y);
let direction = cursor_position - dog.translation;
let delta = SPEED * time.delta_secs();
if direction.length_squared() > delta * delta {
dog.look_to(-direction, Vec3::Y);
dog.translation += direction.normalize() * delta;
}
}