Disable movement and camera rotation while dead

This commit is contained in:
Sofia 2026-07-20 22:20:12 +03:00
parent 18f298bf10
commit b2dbd2deee

View File

@ -69,10 +69,14 @@ impl<T: IPlayer + ICharacterBody3D + WithBaseField> PlayerMovement for T {
.rotated(Vector3::UP, self.base().get_rotation().y) .rotated(Vector3::UP, self.base().get_rotation().y)
* self.get_move_speed(); * self.get_move_speed();
if self.is_dead() {
self.base_mut().set_velocity(Vector3::ZERO);
} else {
self.base_mut().set_velocity(speed); self.base_mut().set_velocity(speed);
self.base_mut().move_and_slide(); self.base_mut().move_and_slide();
} }
} }
}
#[derive(GodotClass)] #[derive(GodotClass)]
#[class(base=CharacterBody3D, init)] #[class(base=CharacterBody3D, init)]
@ -307,6 +311,7 @@ impl ICharacterBody3D for LocalPlayer {
} }
if let Ok(event) = event.try_cast::<InputEventMouseMotion>() { if let Ok(event) = event.try_cast::<InputEventMouseMotion>() {
if !self.is_dead() {
let x = event.get_relative().x * 0.001 * self.look_sensitivity; let x = event.get_relative().x * 0.001 * self.look_sensitivity;
let y = event.get_relative().y * 0.001 * self.look_sensitivity; let y = event.get_relative().y * 0.001 * self.look_sensitivity;
@ -324,6 +329,7 @@ impl ICharacterBody3D for LocalPlayer {
} }
} }
} }
}
#[godot_api] #[godot_api]
impl LocalPlayer { impl LocalPlayer {