GravityInverter.gd 846 B

1234567891011121314151617181920212223242526272829
  1. extends EntityGenerator
  2. const new_vector = Vector2.UP
  3. func activate() -> void:
  4. for i in get_tree().get_nodes_in_group("Players"):
  5. on_player_entered(i)
  6. func deactivate() -> void:
  7. for i in get_tree().get_nodes_in_group("Players"):
  8. on_player_exited(i)
  9. func on_player_entered(player: Player) -> void:
  10. if player.gravity_vector == new_vector:
  11. return
  12. player.gravity_vector = new_vector
  13. player.global_position.y -= 16
  14. player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90)
  15. player.reset_physics_interpolation()
  16. func on_player_exited(player: Player) -> void:
  17. if player.gravity_vector == Vector2.DOWN:
  18. return
  19. player.gravity_vector = Vector2.DOWN
  20. player.global_position.y += 16
  21. player.velocity.y *= 1.1
  22. player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90)
  23. player.reset_physics_interpolation()