wall kicks can work
This commit is contained in:
parent
1895b3b10b
commit
638495f4a3
5 changed files with 83 additions and 4 deletions
Binary file not shown.
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 5 KiB |
Binary file not shown.
|
@ -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("AAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAAFAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAADAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAABAAYAAAAAAAAAAAABAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAABAAIAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAA=")
|
||||
tile_map_data = PackedByteArray("AAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAAFAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAADAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAABAAYAAAAAAAAAAAABAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAABAAIAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAAIAAgAAAAAAAAAAAAIAAcAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAA=")
|
||||
tile_set = ExtResource("2_dj7w1")
|
||||
|
||||
[node name="Lashy" parent="." instance=ExtResource("4_gykx6")]
|
||||
position = Vector2(144, 112)
|
||||
position = Vector2(88, 40)
|
||||
launch_power = 300.0
|
||||
idle_radius = 6.0
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@ extends CharacterBody2D
|
|||
@export var max_run_speed: float
|
||||
@export var turn_acceleration: float
|
||||
@export var stopping_force: float
|
||||
@export var bonk_speed_threshold: float
|
||||
@export var bonk_power: float
|
||||
|
||||
@export_group("Air Movement")
|
||||
@export var gravity: float
|
||||
|
@ -39,6 +41,7 @@ var input_dir: Vector2 = Vector2.ZERO:
|
|||
|
||||
var _last_velocity: Vector2 = Vector2.ZERO
|
||||
var _splat_normal: Vector2 = Vector2.ZERO
|
||||
var _bonk_cancel_velocity: Vector2 = Vector2.ZERO
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
|
@ -94,6 +97,25 @@ func _apply_turn_acceleration(delta: float) -> void:
|
|||
#endregion
|
||||
|
||||
|
||||
#region Bonk
|
||||
func _check_for_bonk(_delta: float) -> void:
|
||||
if absf(velocity.x) >= bonk_speed_threshold:
|
||||
wall_cast.force_shapecast_update()
|
||||
if wall_cast.is_colliding():
|
||||
state_chart.send_event(&"bonked")
|
||||
|
||||
func _enter_bonk() -> void:
|
||||
_bonk_cancel_velocity = velocity * Vector2(-1.0, 1.0) # horizontally inverted velocity
|
||||
velocity = Vector2.ZERO
|
||||
|
||||
func _cancel_bonk() -> void:
|
||||
velocity = _bonk_cancel_velocity
|
||||
|
||||
func _apply_bonk() -> void:
|
||||
velocity.x = signf(_bonk_cancel_velocity.x) * bonk_power
|
||||
#endregion
|
||||
|
||||
|
||||
#region Falling
|
||||
func _apply_gravity(delta: float) -> void:
|
||||
if input_dir.y > 0.0:
|
||||
|
|
|
@ -117,6 +117,8 @@ run_acceleration = 200.0
|
|||
max_run_speed = 100.0
|
||||
turn_acceleration = 300.0
|
||||
stopping_force = 250.0
|
||||
bonk_speed_threshold = 75.0
|
||||
bonk_power = 80.0
|
||||
gravity = 450.0
|
||||
fast_gravity = 675.0
|
||||
jump_power = 180.0
|
||||
|
@ -144,7 +146,6 @@ texture = ExtResource("3_trcll")
|
|||
offset = Vector2(0, -2)
|
||||
hframes = 8
|
||||
vframes = 4
|
||||
frame = 7
|
||||
region_rect = Rect2(0, 0, 64, 64)
|
||||
|
||||
[node name="Idle" type="Node" parent="Graphics/Sprite"]
|
||||
|
@ -154,6 +155,14 @@ script = ExtResource("4_bsdw5")
|
|||
script = ExtResource("4_bsdw5")
|
||||
first_frame = Vector2i(1, 0)
|
||||
|
||||
[node name="Bonk" type="Node" parent="Graphics/Sprite"]
|
||||
script = ExtResource("4_bsdw5")
|
||||
first_frame = Vector2i(3, 0)
|
||||
|
||||
[node name="StunnedFall" type="Node" parent="Graphics/Sprite"]
|
||||
script = ExtResource("4_bsdw5")
|
||||
first_frame = Vector2i(3, 2)
|
||||
|
||||
[node name="Skid" type="Node" parent="Graphics/Sprite"]
|
||||
script = ExtResource("4_bsdw5")
|
||||
first_frame = Vector2i(2, 0)
|
||||
|
@ -273,6 +282,12 @@ editor_description = "Player is standing on a floor."
|
|||
script = ExtResource("6_jnxnd")
|
||||
initial_state = NodePath("Standing")
|
||||
|
||||
[node name="on Bonked" type="Node" parent="StateChart/Root/Grounded"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../Floating/Bonk")
|
||||
event = &"bonked"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="on JumpPressed" type="Node" parent="StateChart/Root/Grounded"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../Airborne/Jumping")
|
||||
|
@ -381,6 +396,12 @@ to = NodePath("../../../Floating/ChompVault")
|
|||
event = &"corner_detected"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="on Bonked" type="Node" parent="StateChart/Root/Airborne/Falling"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../../Floating/Bonk")
|
||||
event = &"bonked"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="Jumping" type="Node" parent="StateChart/Root/Airborne"]
|
||||
editor_description = "Player has jumped and is rising."
|
||||
script = ExtResource("6_jnxnd")
|
||||
|
@ -399,6 +420,12 @@ to = NodePath("../../../Floating/ChompVault")
|
|||
event = &"corner_detected"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="on Bonked" type="Node" parent="StateChart/Root/Airborne/Jumping"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../../Floating/Bonk")
|
||||
event = &"bonked"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="FromGround" type="Node" parent="StateChart/Root/Airborne/Jumping"]
|
||||
script = ExtResource("10_mvu25")
|
||||
|
||||
|
@ -416,6 +443,15 @@ to = NodePath("../../../Floating/Splat")
|
|||
event = &"splatted"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="StunnedFalling" type="Node" parent="StateChart/Root/Airborne"]
|
||||
script = ExtResource("10_mvu25")
|
||||
|
||||
[node name="on Bonked" type="Node" parent="StateChart/Root/Airborne/StunnedFalling"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../../Floating/Bonk")
|
||||
event = &"bonked"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="Floating" type="Node" parent="StateChart/Root"]
|
||||
script = ExtResource("6_jnxnd")
|
||||
initial_state = NodePath("UnSplat")
|
||||
|
@ -447,7 +483,7 @@ to = NodePath("../../../Airborne/Falling")
|
|||
event = &"grab_pressed"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[node name="on TimeOut" type="Node" parent="StateChart/Root/Floating/Splat"]
|
||||
[node name="on Timeout" type="Node" parent="StateChart/Root/Floating/Splat"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../UnSplat")
|
||||
delay_in_seconds = "0.75"
|
||||
|
@ -461,9 +497,24 @@ script = ExtResource("7_rgjdc")
|
|||
to = NodePath("../../../Airborne/Falling")
|
||||
delay_in_seconds = "0.25"
|
||||
|
||||
[node name="Bonk" type="Node" parent="StateChart/Root/Floating"]
|
||||
script = ExtResource("10_mvu25")
|
||||
|
||||
[node name="on Timeout" type="Node" parent="StateChart/Root/Floating/Bonk"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../../Airborne/StunnedFalling")
|
||||
delay_in_seconds = "0.2"
|
||||
|
||||
[node name="on JumpPressed" type="Node" parent="StateChart/Root/Floating/Bonk"]
|
||||
script = ExtResource("7_rgjdc")
|
||||
to = NodePath("../../../Airborne/Jumping/FromGround")
|
||||
event = &"jump_pressed"
|
||||
delay_in_seconds = "0.0"
|
||||
|
||||
[connection signal="finished" from="Graphics/Sprite/ChompVault" to="StateChart/Root/Floating/ChompVault/on AnimationFinished" method="take"]
|
||||
[connection signal="taken" from="StateChart/Root/on Killed" to="." method="_reset_position"]
|
||||
[connection signal="taken" from="StateChart/Root/on Killed" to="Sounds/Death" method="play"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Grounded" to="." method="_check_for_bonk"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Idle" to="Graphics/Sprite/Idle" method="play"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Stopping" to="Graphics/Sprite/Run" method="play"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_slow_to_stop"]
|
||||
|
@ -475,6 +526,7 @@ delay_in_seconds = "0.25"
|
|||
[connection signal="state_physics_processing" from="StateChart/Root/Grounded/Turning" to="." method="_apply_turn_acceleration"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Airborne" to="." method="_apply_gravity"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Airborne" to="." method="_check_for_corner"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Airborne" to="." method="_check_for_bonk"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Airborne/Falling" to="Graphics/Sprite/Fall" method="play"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Graphics/Sprite/Jump" method="play"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Airborne/Jumping/FromGround" to="." method="_start_jump"]
|
||||
|
@ -486,6 +538,7 @@ delay_in_seconds = "0.25"
|
|||
[connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_check_for_splat"]
|
||||
[connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_face_towards_velocity"]
|
||||
[connection signal="taken" from="StateChart/Root/Airborne/Missile/on Splatted" to="Sounds/HitWall" method="play"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Airborne/StunnedFalling" to="Graphics/Sprite/StunnedFall" method="play"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Floating/ChompVault" to="." method="_start_chomp_vault"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Floating/ChompVault" to="Graphics/Sprite/ChompVault" method="play"]
|
||||
[connection signal="taken" from="StateChart/Root/Floating/ChompVault/on AnimationFinished" to="." method="_end_chomp_vault"]
|
||||
|
@ -494,3 +547,7 @@ delay_in_seconds = "0.25"
|
|||
[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"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Floating/Bonk" to="." method="_enter_bonk"]
|
||||
[connection signal="state_entered" from="StateChart/Root/Floating/Bonk" to="Graphics/Sprite/Bonk" method="play"]
|
||||
[connection signal="taken" from="StateChart/Root/Floating/Bonk/on Timeout" to="." method="_apply_bonk"]
|
||||
[connection signal="taken" from="StateChart/Root/Floating/Bonk/on JumpPressed" to="." method="_cancel_bonk"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue