31 lines
536 B
GDScript
31 lines
536 B
GDScript
extends Control
|
|
|
|
|
|
@export var world_offset = Vector3.ZERO
|
|
|
|
var _pos_offset
|
|
var _attachment
|
|
|
|
|
|
func _ready():
|
|
_pos_offset = position
|
|
_attachment = get_parent() as Node3D
|
|
|
|
|
|
func _process(_delta):
|
|
if _attachment == null:
|
|
return
|
|
|
|
var viewport = get_viewport()
|
|
if viewport == null:
|
|
return
|
|
|
|
var camera = viewport.get_camera_3d()
|
|
if camera == null:
|
|
return
|
|
|
|
var world_pos = world_offset + _attachment.global_transform.origin
|
|
var screen_pos = camera.unproject_position(world_pos)
|
|
|
|
position = _pos_offset + screen_pos - 0.5 * size
|