asteroid.gd 690 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. extends Area2D
  2. # Member variables
  3. const SPEED = -200
  4. const Y_RANDOM = 10
  5. var points = 1
  6. var speed_y = 0.0
  7. var destroyed = false
  8. func _fixed_process(delta):
  9. translate(Vector2(SPEED, speed_y)*delta)
  10. func _ready():
  11. speed_y = rand_range(-Y_RANDOM, Y_RANDOM)
  12. func destroy():
  13. if (destroyed):
  14. return
  15. destroyed = true
  16. get_node("anim").play("explode")
  17. set_fixed_process(false)
  18. get_node("sfx").play("sound_explode")
  19. # Accumulate points
  20. get_node("/root/game_state").points += 1
  21. func is_enemy():
  22. return not destroyed
  23. func _on_visibility_enter_screen():
  24. set_fixed_process(true)
  25. # Make it spin!
  26. get_node("anim").play("spin")
  27. func _on_visibility_exit_screen():
  28. queue_free()