diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index cc24896..3f22285 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -519,18 +519,23 @@ impl ICharacterBody3D for LocalPlayer { } if let Some(pos) = self.raycast_from_camera() { + let dir = if let Some(origin) = &self.camera_origin { + pos - origin.get_global_position() + } else { + Vector3::ZERO + }; if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { match peer { PeerKind::Client(peer, addr) => { - if self.try_throw_telegrenade(pos) { - peer.send_reliable(addr, ThrowTelegrenade(0, pos.into())); + if self.try_throw_telegrenade(dir) { + peer.send_reliable(addr, ThrowTelegrenade(0, dir.into())); } } PeerKind::Server(peer, _) => { - if self.try_throw_telegrenade(pos) { + if self.try_throw_telegrenade(dir) { peer.broadcast_reliable(ThrowTelegrenade( self.player_id.unwrap_or(0), - pos.into(), + dir.into(), )); } }