Move ball when it's being shot

This commit is contained in:
Sofia 2026-07-22 23:53:27 +03:00
parent 09959cb923
commit 4b41d61040

View File

@ -2,8 +2,9 @@ use godot::{classes::AudioStreamPlayer3D, prelude::*};
use serde::{Deserialize, Serialize};
use crate::{
ball::Ball,
game_manager::{Game, GameOption},
net::util::cast_ray,
net::{network_manager::NetworkManager, util::cast_ray},
player::{DamageSource, IPlayer},
};
@ -68,7 +69,7 @@ impl Weapon for Raygun {
}
if deal_damage && let Some(target) = target {
if let Ok(mut player) = target.collider.try_dynify::<dyn IPlayer>() {
if let Ok(mut player) = target.collider.clone().try_dynify::<dyn IPlayer>() {
self.run_deferred(move |_| {
if let Some(game) = Game::singleton()
&& game.bind().opts.is_true(GameOption::FriendlyFire)
@ -80,6 +81,11 @@ impl Weapon for Raygun {
);
}
});
} else if let Ok(mut ball) = target.collider.try_cast::<Ball>() {
let prev_velocity = ball.bind().base().get_linear_velocity();
ball.bind_mut()
.base_mut()
.set_linear_velocity(prev_velocity + dir * 10.);
}
}
}