diff --git a/src/player/camera_controller.gd b/src/player/camera_controller.gd index 2bef35b..948e146 100644 --- a/src/player/camera_controller.gd +++ b/src/player/camera_controller.gd @@ -1,6 +1,10 @@ class_name CameraController extends Node3D const PITCH_LIMIT := deg_to_rad(85.0) +const FOCUS_SENSITIVITY := 0.2 +const FOCUS_ACCELERATION := 3 + +@onready var player: Player = owner @onready var _target := Vector2(rotation.x, rotation.y) @@ -17,6 +21,11 @@ func camera_motion(motion: Vector2) -> void: var x_sensitivity: float = ProjectSettings.get_setting("game/config/input/mouse_sensitivity_x") var y_sensitivity: float = ProjectSettings.get_setting("game/config/input/mouse_sensitivity_y") var invert_pitch: bool = ProjectSettings.get_setting("game/config/input/invert_pitch") + if player.firing: + # Focus movement when firing + # Game mechanic, should not be user-configurable. + x_sensitivity = FOCUS_SENSITIVITY + y_sensitivity = FOCUS_SENSITIVITY _target.y -= deg_to_rad(motion.x * x_sensitivity) _target.x = clampf( @@ -30,5 +39,7 @@ func _physics_process(_delta: float) -> void: var mouse_accel: float = ( ProjectSettings.get_setting("game/config/input/mouse_acceleration") / 60.0 ) + if player.firing: + mouse_accel = FOCUS_ACCELERATION / 60.0 rotation.y = lerp_angle(rotation.y, _target.y, mouse_accel) rotation.x = lerp_angle(rotation.x, _target.x, mouse_accel) diff --git a/src/player/player.gd b/src/player/player.gd index 2a4b79c..ebdd812 100644 --- a/src/player/player.gd +++ b/src/player/player.gd @@ -13,10 +13,11 @@ var gravity: Vector3 = ( ) var selected_interactive: Interactive +var firing := false @onready var player_hud: PlayerHUD = %PlayerHUD -@onready var camera_pivot: Node3D = %CameraPivot +@onready var camera_pivot: CameraController = %CameraPivot @onready var spray_muzzle: Marker3D = %SprayMuzzle @onready var interact_ray: RayCast3D = %InteractRay @@ -49,8 +50,10 @@ func _physics_process(delta: float) -> void: if Input.is_action_pressed("fire"): get_spray().fire() + firing = true else: get_spray().idle() + firing = false # Gravity if not is_on_floor(): diff --git a/src/props/wall_switch/wall_switch.gd b/src/props/wall_switch/wall_switch.gd index 57819e7..c05f6ae 100644 --- a/src/props/wall_switch/wall_switch.gd +++ b/src/props/wall_switch/wall_switch.gd @@ -3,7 +3,7 @@ extends Node3D signal cleared signal activated -const CLEAR_THRESHOLD := 2750 +const CLEAR_THRESHOLD := 2650 @export var enabled := false