From 487bfc87d7bcc4d9d26ce13c556844fbf1d90a60 Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Fri, 5 Aug 2022 21:23:26 +0200 Subject: [PATCH] Better enemy bouncing --- src/Actors/Blobby/Blobby.gd | 16 +++++++--------- src/Actors/Player.gd | 4 +++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index f95dbf5..3047628 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -9,11 +9,12 @@ onready var init_boost_type = player_state_machine.init_boost_type onready var effect_player = $BlobbyActionEffects/AnimationPlayer var wall_touch_direction = 1 +var stomping = false # When the Enemy stomp AREA enters the enemy collision area -> stomp func _on_BlobbySkin_area_entered(area: Area2D) -> void: if area.is_in_group("weakpoint"): - velocity = calculate_stomp_velocity(velocity, stomp_feedback) + stomping = true if area.is_in_group("harmful"): die() @@ -227,6 +228,9 @@ func calculate_jump_velocity( ) -> Vector2: var state = player_state_machine.state var additive_jump_force = velocity_jump_boost_ratio * abs(velocity.x) * mass + if stomping: + additive_jump_force += stomp_feedback / delta + stomping = false if state != "jump": linear_velocity.y = PhysicsFunc.two_step_euler( @@ -276,6 +280,8 @@ func calculate_fall_velocity( jump_buffer_filled = true if is_correct_airstrafe_input(): linear_velocity = execute_airstrafe(linear_velocity, delta, direction) + if stomping: + linear_velocity = calculate_jump_velocity(Vector2(linear_velocity.x,0), delta, direction) return linear_velocity @@ -329,14 +335,6 @@ func execute_airstrafe( return linear_velocity -func calculate_stomp_velocity( - linear_velocity: Vector2, impulse: float -) -> Vector2: - var out := linear_velocity - out.y = -impulse - return out - - func execute_movement() -> void: velocity = move_and_slide(velocity, FLOOR_NORMAL,false, 4, 0.785398,false) diff --git a/src/Actors/Player.gd b/src/Actors/Player.gd index 85e35d7..af05774 100644 --- a/src/Actors/Player.gd +++ b/src/Actors/Player.gd @@ -4,7 +4,7 @@ const PhysicsConst = preload("res://src/Utilities/Physic/PhysicsConst.gd") const FLOOR_NORMAL := Vector2.UP -var stomp_feedback := 1000.0 +var stomp_feedback := 1200 var inair_velocity := 21 var wallslide_threshold := 1000 var base_floor_friction := 0.5 @@ -21,6 +21,8 @@ var init_acceleration_force := { # newtonmeters is the unit var acceleration_force := { "walk": Vector2(1800, 1233), + "fall": Vector2(0, 0), + "jump": Vector2(0, 0), "idle": Vector2(1800, 1233), "duck": Vector2(500, 1400), "run": Vector2(2500, 1290),