39 lines
1.3 KiB
GDScript
39 lines
1.3 KiB
GDScript
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
|
|
|
|
|