Skip to content

Commit 670f285

Browse files
Refactor inputs for move character controller and head movement
1 parent d19c6dc commit 670f285

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

addons/character-controller/core/character_controller_3d.gd

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,7 @@ var fly_ability_path := NodePath("Fly Ability 3D")
7373
var swim_ability_path := NodePath("Swim Ability 3D")
7474

7575
var direction := Vector3()
76-
var input_axis := Vector2()
77-
var input_crouch := false
78-
var input_jump := false
7976
var input_up := false
80-
var input_sprint := false
81-
var input_fly_mode := false
8277
var step_cycle : float = 0
8378
var next_step : float = 0
8479
var horizontal_velocity
@@ -142,14 +137,13 @@ func _start_variables():
142137
swim_ability.submerged_speed_multiplier = submerged_speed_multiplier
143138

144139

145-
func move(_delta: float) -> void:
146-
var direction = _direction_input(input_axis, direction_base_node)
140+
func move(_delta: float, input_axis := Vector2.ZERO, input_jump := false, input_crouch := false, input_sprint := false) -> void:
141+
var direction = _direction_input(input_axis, input_crouch, direction_base_node)
147142
if not swim_ability.is_floating():
148143
_check_landed()
149144
if not jump_ability.is_actived() and not is_fly_mode() and not is_submerged() and not is_floating():
150145
velocity.y -= gravity * _delta
151146

152-
fly_ability.set_active(input_fly_mode)
153147
swim_ability.set_active(!fly_ability.is_actived())
154148
jump_ability.set_active(input_jump and is_on_floor() and not head_check.is_colliding())
155149
walk_ability.set_active(not is_fly_mode() and not swim_ability.is_floating())
@@ -183,7 +177,7 @@ func _check_step(_delta):
183177
_step(is_on_floor())
184178

185179

186-
func _direction_input(input : Vector2, aim_node : Node3D) -> Vector3:
180+
func _direction_input(input : Vector2, input_crouch : bool, aim_node : Node3D) -> Vector3:
187181
direction = Vector3()
188182
var aim = aim_node.get_global_transform().basis
189183
if input.x >= 0.5:

addons/character-controller/example/main/player.gd

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,19 @@ func _ready():
1818
submerged.connect(_on_controller_subemerged.bind())
1919

2020
func _physics_process(delta):
21-
input_axis = Input.get_vector(input_back_action_name, input_forward_action_name, input_left_action_name, input_right_action_name)
22-
input_crouch = Input.is_action_pressed(input_crouch_action_name)
23-
input_jump = Input.is_action_just_pressed(input_jump_action_name)
24-
input_up = Input.is_action_pressed(input_jump_action_name)
25-
input_sprint = Input.is_action_pressed(input_sprint_action_name)
26-
if Input.is_action_just_pressed(input_fly_mode_action_name):
27-
input_fly_mode = !input_fly_mode
28-
move(delta)
21+
var is_valid_input := Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
22+
23+
if is_valid_input:
24+
if Input.is_action_just_pressed(input_fly_mode_action_name):
25+
fly_ability.set_active(not fly_ability.is_actived())
26+
var input_axis = Input.get_vector(input_back_action_name, input_forward_action_name, input_left_action_name, input_right_action_name)
27+
var input_crouch = Input.is_action_pressed(input_crouch_action_name)
28+
var input_jump = Input.is_action_just_pressed(input_jump_action_name)
29+
var input_up = Input.is_action_pressed(input_jump_action_name)
30+
var input_sprint = Input.is_action_pressed(input_sprint_action_name)
31+
move(delta, input_axis, input_jump, input_crouch, input_sprint)
32+
else:
33+
move(delta)
2934

3035
# Called when there is an input event
3136
func _input(event: InputEvent) -> void:

addons/character-controller/fps/bob/head_bob.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func _do_head_bob(speed: float, delta: float) -> Vector3:
5252

5353
return Vector3(x_pos,y_pos,0)
5454

55-
func head_bob_process(horizontal_velocity:Vector3, input_axis:Vector2, is_sprint, is_on_floor:bool, _delta:float):
55+
func head_bob_process(horizontal_velocity:Vector3, input_axis:Vector2, is_sprint:bool, is_on_floor:bool, _delta:float):
5656
if jump_bop_enabled:
5757
lerp_bob_curve.bob_process(_delta)
5858

addons/character-controller/fps/fps_controller_3d.gd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,21 @@ func setup():
3939
head_bob.vertical_horizontal_ratio = vertical_horizontal_ratio
4040
head_bob.setup_bob(step_interval * 2);
4141

42-
func _check_head_bob(_delta):
42+
func _check_head_bob(_delta, input_axis : Vector2):
4343
head_bob.head_bob_process(horizontal_velocity, input_axis, is_sprinting(), is_on_floor(), _delta)
4444

4545
func rotate_head(mouse_axis : Vector2) -> void:
4646
head.rotate_camera(mouse_axis)
4747

48-
func move(_delta: float):
48+
func move(_delta: float, input_axis := Vector2.ZERO, input_jump := false, input_crouch := false, input_sprint := false):
4949
if is_fly_mode() or is_floating():
5050
direction_base_node = head
5151
else:
5252
direction_base_node = self
53-
super.move(_delta)
53+
super.move(_delta, input_axis, input_jump, input_crouch, input_sprint)
5454
if not is_fly_mode() and not swim_ability.is_floating() and not swim_ability.is_submerged():
5555
camera.set_fov(lerp(camera.fov, normal_fov * _fov_modifiers, _delta * fov_change_speed))
56-
_check_head_bob(_delta)
56+
_check_head_bob(_delta, input_axis)
5757

5858
func _on_jumped():
5959
super._on_jumped()

0 commit comments

Comments
 (0)