WindArea.gd 673 B

12345678910111213141516171819
  1. extends Area2D
  2. @export var wind_force := 30
  3. func _ready() -> void:
  4. await get_tree().create_timer(0.1, false).timeout
  5. get_parent().move_child(self, 0)
  6. func _physics_process(delta: float) -> void:
  7. for i in get_overlapping_areas():
  8. if i.owner is Player:
  9. if i.owner.spring_bouncing == false and i.owner.is_on_wall() == false and i.owner.state_machine.state.name == "Normal":
  10. i.owner.global_position.x += wind_force * delta
  11. var active := get_overlapping_areas().any(func(area: Area2D) -> bool: return area.owner is Player)
  12. $CanvasLayer/Control/Particles.emitting = active
  13. if active and $SFX.is_playing() == false:
  14. $SFX.play()
  15. elif not active:
  16. $SFX.stop()