From b3027eed255c5ab5c1813c43a315c8b92542afb5 Mon Sep 17 00:00:00 2001 From: katsumi143 <32640219+katsumi143@users.noreply.github.com> Date: Sat, 2 Mar 2024 19:58:29 +1000 Subject: [PATCH] fix inverse kinematics target handler --- src/client/characters.luau | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/client/characters.luau b/src/client/characters.luau index ad60103..bfd2672 100644 --- a/src/client/characters.luau +++ b/src/client/characters.luau @@ -134,10 +134,17 @@ function module.create(player: Player, model: Model): types.Character? } character.kinematics[child.Name] = kinematic - local function handle_target(instance: Instance) - if instance:IsA("Attachment") then + local connection: RBXScriptConnection? + local function handle_target(instance: Instance?) + if instance and instance:IsA("Attachment") then kinematic.control_target = instance kinematic.control_target_identity = child:GetAttribute("offset") + + if connection then + connection:Disconnect() + connection = nil + -- TODO: remove reference from connections table + end end end @@ -145,7 +152,8 @@ function module.create(player: Player, model: Model): types.Character? if target then handle_target(target) else - table.insert(connections, child:GetPropertyChangedSignal("Target"):Once(handle_target)) + connection = child:GetPropertyChangedSignal("Target"):Connect(handle_target) + table.insert(connections, connection :: RBXScriptConnection) end elseif child:IsA("Motor6D") and child.Name == "Root" then character.waist_motor = child