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)