36 lines
861 B
GDScript3
36 lines
861 B
GDScript3
extends Node2D
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
var target: = Vector3()
|
|
var rect: = Rect2()
|
|
func _ready():
|
|
pass
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
var pos = get_viewport().get_camera().unproject_position(target)
|
|
rect = get_viewport_rect()
|
|
rect = rect.grow(-8.0)
|
|
if get_viewport().get_camera().is_position_behind(target):
|
|
if visible:
|
|
hide()
|
|
else:
|
|
if rect.has_point(pos):
|
|
if !visible:
|
|
show()
|
|
else:
|
|
pos.x = clamp(pos.x, rect.position.x, rect.position.x + rect.size.x)
|
|
pos.y = clamp(pos.y, rect.position.y, rect.position.y + rect.size.y)
|
|
if position.distance_squared_to(pos) < 480.0:
|
|
position = position.linear_interpolate(pos, delta)
|
|
else:
|
|
position = pos
|
|
|