fake_parallax.gd 768 B

1234567891011121314151617181920212223
  1. #@tool
  2. class_name FakeParallax
  3. extends Node2D
  4. @export var rate = 0.0
  5. @onready var base_position = get_position()
  6. @onready var camera = get_tree().get_root().find_child("Camera", true, false)
  7. var notifier: VisibleOnScreenNotifier2D = VisibleOnScreenNotifier2D.new()
  8. func _ready():
  9. if camera and !Engine.is_editor_hint():
  10. pass
  11. notifier.set_rect(Rect2(Vector2(-1920.0, -1080.0), Vector2(3840.0, 2160.0)))
  12. add_child(notifier)
  13. camera.connect("camera_moved", _update)
  14. _update(true)
  15. func _update(force: bool = false):
  16. if force or notifier.is_on_screen():
  17. if camera:
  18. pass
  19. var delta = camera.get_screen_center_position() - base_position
  20. set_position(base_position + delta * rate)