Files
godot-demo-projects/3d/physics_tests/utils/control3d.gd
2025-10-11 05:03:59 -07:00

31 lines
571 B
GDScript

extends Control
@export var world_offset := Vector3.ZERO
var _pos_offset: Vector2
var _attachment: Node3D
func _ready() -> void:
_pos_offset = position
_attachment = get_parent()
func _process(_delta: float) -> void:
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