extends Area3D @onready var _dialog = $"../Kreb/WinDialog" @onready var _float_point = $FloatPoint var _lockout = false var _grabbed_monitor: RigidBody3D func _on_body_entered(body: Node3D) -> void: if not body.is_in_group('monitors') or _lockout: return _lockout = true _dialog.play() # TODO: Better way to get the player? for player in get_tree().get_nodes_in_group("players"): if player._held_object == body: player.force_drop() _grabbed_monitor = body _grabbed_monitor.remove_from_group('can_hold') func _physics_process(delta: float) -> void: if _grabbed_monitor: var delta_position = _float_point.global_position - _grabbed_monitor.global_position var move_speed = min(delta_position.length() * 400, 1000) _grabbed_monitor.linear_velocity = delta_position.normalized() * move_speed * delta