From 5ef7959f19dbf1cbf67209c725fd1149d50113ae Mon Sep 17 00:00:00 2001 From: yuki Date: Fri, 14 Nov 2025 23:22:29 -0300 Subject: [PATCH] two player independent controls --- project.godot | 49 ++++++++++++++++++++++++++++----- scenes/player/player.gd | 4 +-- scenes/player/states/hitting.gd | 4 +-- scenes/player/states/idle.gd | 4 +-- scenes/player/states/running.gd | 4 +-- 5 files changed, 50 insertions(+), 15 deletions(-) diff --git a/project.godot b/project.godot index b63740d..84eccca 100644 --- a/project.godot +++ b/project.godot @@ -41,41 +41,76 @@ hit="hitboxes" [input] -move_up={ +p1_move_up={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) ] } -move_down={ +p1_move_down={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) ] } -move_left={ +p1_move_left={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) ] } -move_right={ +p1_move_right={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) ] } -shift={ +p1_mod={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } -hit_left={ +p1_hit_left={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":79,"key_label":0,"unicode":111,"location":0,"echo":false,"script":null) ] } -hit_right={ +p1_hit_right={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":80,"key_label":0,"unicode":112,"location":0,"echo":false,"script":null) ] } +p2_move_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_move_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_move_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_move_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_mod={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194438,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_hit_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194440,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +p2_hit_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194441,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [layer_names] diff --git a/scenes/player/player.gd b/scenes/player/player.gd index 5a21c94..96aefc2 100644 --- a/scenes/player/player.gd +++ b/scenes/player/player.gd @@ -18,6 +18,6 @@ func _ready() -> void: def_dir = 'up' if id == 1 else 'down' func get_movement_vector() -> Vector2: - var x_mov: float = Input.get_action_strength('move_right') - Input.get_action_strength('move_left') - var y_mov: float = Input.get_action_strength('move_down') - Input.get_action_strength('move_up') + var x_mov: float = Input.get_action_strength('p'+str(id)+'_move_right') - Input.get_action_strength('p'+str(id)+'_move_left') + var y_mov: float = Input.get_action_strength('p'+str(id)+'_move_down') - Input.get_action_strength('p'+str(id)+'_move_up') return Vector2(x_mov, y_mov) diff --git a/scenes/player/states/hitting.gd b/scenes/player/states/hitting.gd index 6c533b5..7cf0f17 100644 --- a/scenes/player/states/hitting.gd +++ b/scenes/player/states/hitting.gd @@ -63,11 +63,11 @@ func _on_hit_end() -> void: print("transitioning to idling") finished.emit(IDLE) return - elif Input.is_action_pressed("hit_left"): + elif Input.is_action_pressed('p'+str(player.id)+'_hit_left'): print("transitioning to hitting left") finished.emit(HITTING, {hit_dir = "left"}) return - elif Input.is_action_pressed("hit_right"): + elif Input.is_action_pressed('p'+str(player.id)+'_hit_right'): print("transitioning to hitting right") finished.emit(HITTING, {hit_dir = "right"}) return diff --git a/scenes/player/states/idle.gd b/scenes/player/states/idle.gd index 90390e6..f0f55eb 100644 --- a/scenes/player/states/idle.gd +++ b/scenes/player/states/idle.gd @@ -19,9 +19,9 @@ func _state_physics_update(_delta: float) -> void: if movement_vector.length() > player.DEADZONE: finished.emit(RUNNING) return - elif Input.is_action_pressed("hit_left"): + elif Input.is_action_pressed('p'+str(player.id)+'_hit_left'): finished.emit(HITTING, {hit_dir = "left"}) return - elif Input.is_action_pressed("hit_right"): + elif Input.is_action_pressed('p'+str(player.id)+'_hit_right'): finished.emit(HITTING, {hit_dir = "right"}) return diff --git a/scenes/player/states/running.gd b/scenes/player/states/running.gd index 2a3464a..cc8dfdd 100644 --- a/scenes/player/states/running.gd +++ b/scenes/player/states/running.gd @@ -16,10 +16,10 @@ func _state_physics_update(_delta: float) -> void: if movement_vector.length() <= player.DEADZONE: finished.emit(IDLE) return - elif Input.is_action_just_pressed("hit_left"): + elif Input.is_action_just_pressed('p'+str(player.id)+'_hit_left'): finished.emit(HITTING, {hit_dir = "left"}) return - elif Input.is_action_just_pressed("hit_right"): + elif Input.is_action_just_pressed('p'+str(player.id)+'_hit_right'): finished.emit(HITTING, {hit_dir = "right"}) return