extends Sprite var screen_size: Vector2 var velocity = Vector2(1,1) onready var blobby = $"%Blobby" onready var cam = $"%BlobbyCam" func _ready() -> void: $ControllerButton.path = "move_right" screen_size = cam.screen_rect func _process(delta: float) -> void: # TODO process less in each frame self.texture = $ControllerButton.icon self.scale.x = 0.5 self.scale.y = 0.5 var tex_size = Vector2(self.texture.get_width(), self.texture.get_height()/4) var up_left_pos = cam.get_global_transform().affine_inverse() * (position - tex_size/2) var down_right_pos = cam.get_global_transform().affine_inverse() * (position + tex_size/2) var screen_stretch_factor = get_tree().root.size / screen_size var blobby_screen_pos = (blobby.get_viewport_transform() * (blobby.position))/screen_stretch_factor var corrected_screen = screen_size - blobby_screen_pos print(get_tree().root.get_visible_rect().position) if up_left_pos.x + blobby_screen_pos.x <= 0: velocity.x = 1 elif down_right_pos.x >= corrected_screen.x: velocity.x = -1 if up_left_pos.y + blobby_screen_pos.y <= 0: velocity.y = 1 elif down_right_pos.y >= corrected_screen.y: velocity.y = -1 self.position += velocity