Move ball when it's being shot
This commit is contained in:
parent
e14e9b8c62
commit
54c492afa4
@ -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.);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user