FPS Controller
This commit is contained in:
26
demo/assets/scripts/player/components/mouse_capture.gd
Normal file
26
demo/assets/scripts/player/components/mouse_capture.gd
Normal file
@@ -0,0 +1,26 @@
|
||||
class_name MouseCaptureComponent extends Node
|
||||
|
||||
@export var debug : bool = false
|
||||
@export_category("Mouse Capture Settings")
|
||||
@export var current_mouse_mode : Input.MouseMode = Input.MOUSE_MODE_CAPTURED
|
||||
@export var mouse_sensitivity : float = 0.005
|
||||
|
||||
var _capture_mouse : bool
|
||||
var _mouse_input : Vector2
|
||||
|
||||
|
||||
## Captures the relative mouse movement from the center of the screen
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
_capture_mouse = event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED
|
||||
if _capture_mouse:
|
||||
_mouse_input.x += -event.screen_relative.x * mouse_sensitivity
|
||||
_mouse_input.y += -event.screen_relative.y * mouse_sensitivity
|
||||
if debug:
|
||||
print(_mouse_input)
|
||||
|
||||
func _ready() -> void:
|
||||
Input.mouse_mode = current_mouse_mode
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_mouse_input = Vector2.ZERO
|
||||
Reference in New Issue
Block a user