chomp vault to help getting up corners

This commit is contained in:
Haze Weathers 2025-03-15 04:39:38 -04:00
parent 4b4138a542
commit 5cf87d8bb7
5 changed files with 118 additions and 10 deletions

View file

@ -13,12 +13,19 @@ extends CharacterBody2D
@export var jump_power: float
@export var splat_launch_power: float
@export var splat_offset: float
@export var chomp_vault_impulse: Vector2
@export_group("Internal References")
@export var state_chart: StateChart
@export var graphics: Node2D
@export var run_animation: SpritesheetAnimation
@export var wall_cast: ShapeCast2D
@export var corner_cast: RayCast2D
@export var corner_height_cast: RayCast2D
@export var corner_snap_point: Node2D
@export var vault_off_point: Node2D
@onready var start_position: Vector2 = global_position
@ -93,6 +100,30 @@ func _start_jump() -> void:
#endregion
#region ChompVault
func _check_for_corner(_delta: float) -> void:
if signf(input_dir.x) == signf(graphics.scale.x):
corner_cast.force_raycast_update()
if not corner_cast.is_colliding():
wall_cast.force_shapecast_update()
if wall_cast.is_colliding():
state_chart.send_event(&"corner_detected")
func _start_chomp_vault() -> void:
corner_height_cast.force_raycast_update()
global_position.x = wall_cast.get_collision_point(0).x
global_position.y = corner_height_cast.get_collision_point().y
global_position -= to_local(corner_snap_point.global_position)
velocity = Vector2.ZERO
func _end_chomp_vault() -> void:
global_position += to_local(corner_snap_point.global_position)
global_position -= to_local(vault_off_point.global_position)
velocity = chomp_vault_impulse
velocity.x *= signf(graphics.scale.x)
#endregion
#region Missile
func _restore_graphics_rotation() -> void:
graphics.rotation = 0.0