Загрузка данных


local part = script.Parent :: MeshPart
local TweenService = game:GetService("TweenService")

local cd = part:FindFirstChildOfClass("ClickDetector")
if not cd then
 warn("Добавьте ClickDetector в этот MeshPart (Insert Object -> ClickDetector).")
 return
end

local startSize = part.Size
local startCF = part.CFrame
local duration = 0.35

-- Насколько сжимать по ширине (X)
local compressFactor = 0.05

local function tween(size, cframe)
 local tween = TweenService:Create(
  part,
  TweenInfo.new(duration, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
  { Size = size, CFrame = cframe }
 )
 tween:Play()
end

local opened = false

cd.MouseClick:Connect(function()
 opened = not opened

 if opened then
  -- Сжимаем и смещаем так, чтобы "левый край" остался на месте.
  local newSize = Vector3.new(startSize.X * compressFactor, startSize.Y, startSize.Z)

  -- Смещение центра по локальной X: половина разницы ширин
  local dx = (startSize.X - newSize.X) / 2
  -- dx в локальной системе +X означает вправо от игрока/модели
  local newCF = startCF * CFrame.new(dx, 0, 0) -- вправо

  tween(newSize, newCF)
 else
  tween(startSize, startCF)
 end
end)