Compare commits

...

2 commits

4 changed files with 33 additions and 6 deletions

View file

@ -24,19 +24,19 @@ 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(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(72, 144)
position = Vector2(32, 72)
[node name="RotoBoy" parent="." instance=ExtResource("7_j1102")]
position = Vector2(240, 40)

View file

@ -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
@ -56,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:
@ -90,13 +96,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 +145,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

View file

@ -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)
@ -438,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")
@ -482,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"]

View file

@ -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]