38 lines
1.2 KiB
GDScript
38 lines
1.2 KiB
GDScript
extends RigidBody3D
|
|
|
|
# Configure options
|
|
var mouse_sensitivity := 0.001
|
|
var twist_input := 0.0
|
|
var pitch_input := 0.0
|
|
|
|
@onready var twist_pivot := $TwistPivot
|
|
@onready var pitch_pivot := $TwistPivot/PitchPivot
|
|
|
|
# Do not touch this part of the code
|
|
func _ready() -> void:
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
|
|
|
func _process(delta: float) -> void:
|
|
var input := Vector3.ZERO
|
|
input.x = Input.get_axis("move_left", "move_right")
|
|
input.z = Input.get_axis("move_forward", "move_back")
|
|
|
|
apply_central_force(twist_pivot.basis * input * 3000.0 * delta)
|
|
|
|
if Input.is_action_just_pressed("proluz_ui_pause"):
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
|
|
|
if Input.is_action_just_pressed("proluz_ui_grab"):
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
|
|
|
twist_pivot.rotate_y(twist_input)
|
|
pitch_pivot.rotate_x(pitch_input)
|
|
pitch_pivot.rotation.x = clamp(pitch_pivot.rotation.x, deg_to_rad(-30), deg_to_rad(30))
|
|
twist_input = 0.0
|
|
pitch_input = 0.0
|
|
|
|
func _unhandled_input(event: InputEvent) -> void:
|
|
if event is InputEventMouseMotion:
|
|
if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
|
|
twist_input = - event.relative.x * mouse_sensitivity
|
|
pitch_input = - event.relative.y * mouse_sensitivity
|