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,11 +340,16 @@ 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) {
if player.id != self_id {
player.try_shoot(to, transform, look_up, deal_damage) player.try_shoot(to, transform, look_up, deal_damage)
} else { } else {
false false
} }
} else {
false
}
} }
} }

View File

@ -255,11 +255,13 @@ 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) => {
if self.try_shoot(pos, false) {
peer.send_reliable( peer.send_reliable(
addr, addr,
Shoot(0, pos.into(), self.get_transform(), self.look_up), 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) {
peer.broadcast_reliable(Shoot( peer.broadcast_reliable(Shoot(