Improve latency when client is shooting

This commit is contained in:
Sofia 2026-07-20 20:35:31 +03:00
parent 0d7f5a6bf6
commit 33095ec1b9
2 changed files with 12 additions and 5 deletions

View File

@ -340,8 +340,13 @@ impl Game {
look_up: f32, look_up: f32,
deal_damage: bool, deal_damage: bool,
) -> bool { ) -> bool {
let self_id = self.self_id.clone().unwrap_or(0);
if let Some(player) = self.find_player_mut(player_id) { if let Some(player) = self.find_player_mut(player_id) {
player.try_shoot(to, transform, look_up, deal_damage) if player.id != self_id {
player.try_shoot(to, transform, look_up, deal_damage)
} else {
false
}
} else { } else {
false false
} }

View File

@ -255,10 +255,12 @@ impl ICharacterBody3D for LocalPlayer {
if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer {
match peer { match peer {
PeerKind::Client(peer, addr) => { PeerKind::Client(peer, addr) => {
peer.send_reliable( if self.try_shoot(pos, false) {
addr, peer.send_reliable(
Shoot(0, pos.into(), self.get_transform(), self.look_up), addr,
); Shoot(0, pos.into(), self.get_transform(), self.look_up),
);
}
} }
PeerKind::Server(peer, _) => { PeerKind::Server(peer, _) => {
if self.try_shoot(pos, true) { if self.try_shoot(pos, true) {