Ball.gd 705 B

1234567891011121314151617181920212223242526272829
  1. class_name Ball
  2. extends RigidBody2D
  3. signal kace_contact
  4. const brick_layer = 2
  5. const interrupt_speed = 500
  6. const contact_corrector = 3.0
  7. func go_down_unstopped():
  8. linear_velocity.y = interrupt_speed
  9. linear_velocity = linear_velocity.normalized() * interrupt_speed
  10. set_collision_mask_bit(brick_layer, false)
  11. func _integrate_forces(state : Physics2DDirectBodyState):
  12. for i in range(state.get_contact_count()):
  13. var contact_pos = state.get_contact_local_position(i)
  14. var contact_normal = state.get_contact_local_normal(i)
  15. var correct_pos = contact_pos - contact_normal * contact_corrector
  16. emit_signal("kace_contact", correct_pos)
  17. func _on_Launcher_interrupt_wave():
  18. go_down_unstopped()