From 330ed251533f0f402b2a3b95de326364fe490744 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sat, 15 Mar 2025 05:56:21 -0400 Subject: [PATCH 1/2] jump horizontal boost, no splat when landing on floor, and fast-fall experiments --- maps/level_z.tscn | 6 +++--- objects/player/player.gd | 12 ++++++++++-- objects/player/player.tscn | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/maps/level_z.tscn b/maps/level_z.tscn index cca6728..ac05f96 100644 --- a/maps/level_z.tscn +++ b/maps/level_z.tscn @@ -24,11 +24,11 @@ texture = ExtResource("1_h5jcm") [node name="TileMap" type="TileMapLayer" parent="."] z_index = -100 use_parent_material = true -tile_map_data = PackedByteArray("AAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAYAAAAAAAAAAAARAAcAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAkAAAAAAAAAAAARAAgAAAAAAAAAAAARAAoAAAAAAAAAAAARAAYAAAAAAAAAAAARAAUAAAAAAAAAAAARAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAAFAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAADAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAABAAYAAAAAAAAAAAABAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAABAAIAAAAAAAAAAAAKAAgAAAAAAAAAAAAKAAcAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAA=") +tile_map_data = PackedByteArray("AAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAAFAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAADAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAABAAYAAAAAAAAAAAABAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAABAAIAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAA=") tile_set = ExtResource("2_dj7w1") [node name="Lashy" parent="." instance=ExtResource("4_gykx6")] -position = Vector2(32, 144) +position = Vector2(8, 96) launch_power = 300.0 idle_radius = 6.0 @@ -36,7 +36,7 @@ idle_radius = 6.0 position = Vector2(120, 144) [node name="Spring" parent="." instance=ExtResource("6_tlqas")] -position = Vector2(72, 144) +position = Vector2(32, 72) [node name="RotoBoy" parent="." instance=ExtResource("7_j1102")] position = Vector2(240, 40) diff --git a/objects/player/player.gd b/objects/player/player.gd index c88c706..79347b0 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -10,7 +10,9 @@ extends CharacterBody2D @export_group("Air Movement") @export var gravity: float +@export var fast_gravity: float @export var jump_power: float +@export var jump_horizontal_boost: float @export var splat_launch_power: float @export var splat_offset: float @export var chomp_vault_impulse: Vector2 @@ -90,13 +92,17 @@ func _apply_turn_acceleration(delta: float) -> void: #region Falling func _apply_gravity(delta: float) -> void: - velocity.y += gravity * delta + if input_dir.y > 0.0: + velocity.y += fast_gravity * delta + else: + velocity.y += gravity * delta #endregion #region Jumping func _start_jump() -> void: velocity.y = -jump_power + velocity.x += input_dir.x * jump_horizontal_boost #endregion @@ -135,9 +141,11 @@ func _face_towards_velocity(_delta: float) -> void: func _check_for_splat(delta: float) -> void: var col = move_and_collide(_last_velocity * delta, true) if col: + _splat_normal = col.get_normal() + if _splat_normal.dot(Vector2.UP) > 0.5: + return velocity = Vector2.ZERO global_position += col.get_travel() - _splat_normal = col.get_normal() var angle = col.get_normal().angle() if graphics.scale.x > 0.0: angle += PI diff --git a/objects/player/player.tscn b/objects/player/player.tscn index cfe8fc9..3be5686 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -118,7 +118,9 @@ max_run_speed = 100.0 turn_acceleration = 300.0 stopping_force = 250.0 gravity = 450.0 +fast_gravity = 675.0 jump_power = 180.0 +jump_horizontal_boost = 25.0 splat_launch_power = 240.0 splat_offset = 6.0 chomp_vault_impulse = Vector2(60, -60) From 1895b3b10b734ad44917e5b1ddcf6904a305d9f2 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sat, 15 Mar 2025 06:04:57 -0400 Subject: [PATCH 2/2] detach from splat early by pressing 'grab'/'B' button --- maps/level_z.tscn | 4 ++-- objects/player/player.gd | 4 ++++ objects/player/player.tscn | 8 ++++++++ project.godot | 5 +++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/maps/level_z.tscn b/maps/level_z.tscn index ac05f96..8d2d0de 100644 --- a/maps/level_z.tscn +++ b/maps/level_z.tscn @@ -28,12 +28,12 @@ tile_map_data = PackedByteArray("AAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAA tile_set = ExtResource("2_dj7w1") [node name="Lashy" parent="." instance=ExtResource("4_gykx6")] -position = Vector2(8, 96) +position = Vector2(144, 112) launch_power = 300.0 idle_radius = 6.0 [node name="Player" parent="." instance=ExtResource("5_5v7mr")] -position = Vector2(120, 144) +position = Vector2(96, 136) [node name="Spring" parent="." instance=ExtResource("6_tlqas")] position = Vector2(32, 72) diff --git a/objects/player/player.gd b/objects/player/player.gd index 79347b0..0c7ac0b 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -58,6 +58,10 @@ func _physics_process(delta: float) -> void: func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed(&"jump"): state_chart.send_event(&"jump_pressed") + if event.is_action_pressed(&"grab"): + state_chart.send_event(&"grab_pressed") + if event.is_action_released(&"grab"): + state_chart.send_event(&"grab_released") func kill() -> void: diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 3be5686..54c0aaa 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -440,6 +440,13 @@ to = NodePath("..") event = &"jump_pressed" delay_in_seconds = "0.0" +[node name="on GrabPressed" type="Node" parent="StateChart/Root/Floating/Splat"] +editor_description = "Detach from wall early if \"grab\" is pressed." +script = ExtResource("7_rgjdc") +to = NodePath("../../../Airborne/Falling") +event = &"grab_pressed" +delay_in_seconds = "0.0" + [node name="on TimeOut" type="Node" parent="StateChart/Root/Floating/Splat"] script = ExtResource("7_rgjdc") to = NodePath("../../UnSplat") @@ -484,5 +491,6 @@ delay_in_seconds = "0.25" [connection signal="taken" from="StateChart/Root/Floating/ChompVault/on AnimationFinished" to="." method="_end_chomp_vault"] [connection signal="state_entered" from="StateChart/Root/Floating/Splat" to="Graphics/Sprite/Splat" method="play"] [connection signal="taken" from="StateChart/Root/Floating/Splat/on JumpPressed" to="." method="_do_splat_launch"] +[connection signal="taken" from="StateChart/Root/Floating/Splat/on GrabPressed" to="." method="_restore_graphics_rotation"] [connection signal="state_entered" from="StateChart/Root/Floating/UnSplat" to="Graphics/Sprite/UnSplat" method="play"] [connection signal="state_exited" from="StateChart/Root/Floating/UnSplat" to="." method="_restore_graphics_rotation"] diff --git a/project.godot b/project.godot index c556d90..e38a8ef 100644 --- a/project.godot +++ b/project.godot @@ -73,6 +73,11 @@ jump={ "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":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) ] } +grab={ +"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":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null) +] +} [layer_names]