Move ball when it's being shot
This commit is contained in:
parent
09959cb923
commit
4b41d61040
@ -2,8 +2,9 @@ use godot::{classes::AudioStreamPlayer3D, prelude::*};
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
ball::Ball,
|
||||||
game_manager::{Game, GameOption},
|
game_manager::{Game, GameOption},
|
||||||
net::util::cast_ray,
|
net::{network_manager::NetworkManager, util::cast_ray},
|
||||||
player::{DamageSource, IPlayer},
|
player::{DamageSource, IPlayer},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ impl Weapon for Raygun {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if deal_damage && let Some(target) = target {
|
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 |_| {
|
self.run_deferred(move |_| {
|
||||||
if let Some(game) = Game::singleton()
|
if let Some(game) = Game::singleton()
|
||||||
&& game.bind().opts.is_true(GameOption::FriendlyFire)
|
&& 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