From 3e5a9b31634381b329e6651355555774ff6e612d Mon Sep 17 00:00:00 2001 From: Sofia Date: Sat, 25 Jul 2026 01:19:01 +0300 Subject: [PATCH] Calculate y-rot differently --- rust/src/game_manager.rs | 1 + rust/src/player/local_player.rs | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 1cc0a48..3ac278a 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -1066,6 +1066,7 @@ impl Player { let max_distance = (self.data.ping as f32 / 500.) * (character.dyn_bind().get_move_speed() + character.dyn_bind().get_y_speed()); + godot_print!("{}", max_distance); if client_pos.distance_to(server_pos) <= max_distance { character.dyn_bind_mut().apply_position(client_pos); diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index bc2060d..2d9e37f 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -76,6 +76,7 @@ pub struct LocalPlayer { movement_dir: Vector3, y_speed: f32, + y_rot: f32, look_up: f32, is_dead: bool, @@ -558,12 +559,21 @@ impl ICharacterBody3D for LocalPlayer { } let y_rot = -x * self.look_sensitivity; - self.base_mut().rotate_y(y_rot); + self.y_rot = self.base().get_global_rotation().y + y_rot; } } } } + fn physics_process(&mut self, _: f64) { + let rot = self.y_rot; + let new_rot = Vector3 { + y: rot, + ..self.base().get_global_rotation() + }; + self.base_mut().set_global_rotation(new_rot); + } + fn exit_tree(&mut self) { if let Some(game) = Game::singleton() && !game.bind().game_started