preliminary support for controllers

This commit is contained in:
Taevas 2025-03-31 17:57:54 +02:00
parent 8f18e43af7
commit ff8bd770d2
4 changed files with 76 additions and 12 deletions

View file

@ -12,7 +12,7 @@ const stronger = normal * 3
func _input(_event: InputEvent) -> void: func _input(_event: InputEvent) -> void:
if player_ready: if player_ready:
var grav = stronger if Input.is_key_pressed(KEY_SHIFT) else normal var grav = stronger if Input.is_action_pressed(\"gravity_strong\") else normal
PhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY, grav) PhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY, grav)
" "
@ -25,22 +25,26 @@ func _ready() -> void:
func _input(ev: InputEvent) -> void: func _input(ev: InputEvent) -> void:
if ev is InputEventKey and ev.is_pressed(): if ev is InputEventKey and ev.is_pressed():
var k = ev.keycode var up := Input.is_action_just_pressed(\"gravity_up\")
if k == KEY_UP or k == KEY_RIGHT or k == KEY_LEFT or k == KEY_DOWN: var left := Input.is_action_just_pressed(\"gravity_left\")
var right := Input.is_action_just_pressed(\"gravity_right\")
var down := Input.is_action_just_pressed(\"gravity_down\")
if up or left or right or down:
var direction = Vector3() var direction = Vector3()
if k == KEY_UP: if up:
direction = Vector3.UP direction = Vector3.UP
self.rotation_degrees = -90 self.rotation_degrees = -90
$AudioStreamPlayer.pitch_scale = 1.05 $AudioStreamPlayer.pitch_scale = 1.05
elif k == KEY_LEFT: elif left:
direction = Vector3.LEFT direction = Vector3.LEFT
self.rotation_degrees = -180 self.rotation_degrees = -180
$AudioStreamPlayer.pitch_scale = 1.02 $AudioStreamPlayer.pitch_scale = 1.02
elif k == KEY_RIGHT: elif right:
direction = Vector3.RIGHT direction = Vector3.RIGHT
self.rotation_degrees = 0 self.rotation_degrees = 0
$AudioStreamPlayer.pitch_scale = 0.98 $AudioStreamPlayer.pitch_scale = 0.98
elif k == KEY_DOWN: elif down:
direction = Vector3.DOWN direction = Vector3.DOWN
self.rotation_degrees = 90 self.rotation_degrees = 90
$AudioStreamPlayer.pitch_scale = 0.95 $AudioStreamPlayer.pitch_scale = 0.95

View file

@ -9,9 +9,11 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="exports/*" exclude_filter="exports/*"
export_path="exports/AlakajamEntry.x86_64" export_path="exports/DreamBall.x86_64"
patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
seed=0
encrypt_pck=false encrypt_pck=false
encrypt_directory=false encrypt_directory=false
script_export_mode=2 script_export_mode=2
@ -49,9 +51,11 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="exports/*" exclude_filter="exports/*"
export_path="exports/AlakajamEntry.exe" export_path="exports/DreamBall.exe"
patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
seed=0
encrypt_pck=false encrypt_pck=false
encrypt_directory=false encrypt_directory=false
script_export_mode=2 script_export_mode=2
@ -114,9 +118,11 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="exports/*" exclude_filter="exports/*"
export_path="exports/web/AlakajamEntry.html" export_path="exports/web/DreamBall.html"
patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
seed=0
encrypt_pck=false encrypt_pck=false
encrypt_directory=false encrypt_directory=false
script_export_mode=2 script_export_mode=2

View file

@ -143,9 +143,9 @@ func _unhandled_key_input(event: InputEvent) -> void:
if event.is_pressed() and event is InputEventKey: if event.is_pressed() and event is InputEventKey:
var current_levels := get_current_levels() var current_levels := get_current_levels()
if len(current_levels) and changing_level == false: if len(current_levels) and changing_level == false:
if event.keycode == KEY_ESCAPE: if Input.is_action_just_pressed(\"pause_game\"):
pause_game() pause_game()
elif event.keycode == KEY_R: elif Input.is_action_just_pressed(\"restart_level\"):
pause_game() pause_game()
restart_level() restart_level()

View file

@ -24,6 +24,60 @@ config/windows_native_icon="res://icon.ico"
Settings="*res://settings.gd" Settings="*res://settings.gd"
[input]
gravity_up={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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)
, 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":122,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
]
}
gravity_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)
, 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":113,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
]
}
gravity_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)
, 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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
]
}
gravity_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)
, 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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
]
}
gravity_strong={
"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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
]
}
pause_game={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":4,"pressure":0.0,"pressed":false,"script":null)
]
}
restart_level={
"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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
]
}
[physics] [physics]
3d/run_on_separate_thread=true 3d/run_on_separate_thread=true