diff --git a/scenes/ball/ball.gd b/scenes/ball/ball.gd index 0a06b4a..74bbb48 100644 --- a/scenes/ball/ball.gd +++ b/scenes/ball/ball.gd @@ -31,17 +31,15 @@ func play_animation(speed_scale: float = 0) -> void: sprite.play("default") -func decelerate_to_stop(duration: float = 0.3) -> void: # Call this after collision - # KILL ANY EXISTING TWEEN (one at a time guaranteed!) +func decelerate_to_stop(duration: float = 0.3) -> void: if current_decel_tween: current_decel_tween.kill() - # CREATE NEW ONE current_decel_tween = create_tween() current_decel_tween.tween_property(sprite, "speed_scale", 0.0, duration) current_decel_tween.tween_callback(func() -> void: - sprite.pause() # Freeze on last frame - current_decel_tween = null # Clean up + sprite.pause() + current_decel_tween = null ) @@ -53,8 +51,8 @@ func _on_hit(hitbox: Hit) -> void: print("ball not hit yet") var player: Player = hitbox.get_parent() var timer: Timer = player.hit_timer - var angle: float = randf_range(3*PI/4, PI/4) * (-1 if player.id == 1 else 1) - var speed: float = randf_range(300, 350) if hitbox.power_hit else 0.0 # o.o + var angle: float = (PI/2 if hitbox.power_hit else randf_range(3*PI/4, PI/4)) * (-1 if player.id == 1 else 1) + var speed: float = randf_range(350, 450) if hitbox.power_hit else 0.0 # o.o launch(angle, speed) print("ball hit") if not timer.is_connected("timeout", _on_hit_end):