fml-avs/scripts/win_box.gd
2024-12-22 17:01:59 -05:00

34 lines
891 B
GDScript

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