Гайд Плавное перемещение VGUI

  • Nellored
  • Модератор раздела "Garry's Mod"
  • 831
  • 160
  • 173
Кароче сегодня будем плавно ебашить панельку по всему экрану
Lua:
local Frame = vgui.Create("DFrame") -- Ебашим оболочку, так сказать основу
Frame:MakePopup() -- Если это не писать, то курсор не появится
Frame:SetTitle( "Scora лох" ) -- Задаём название
Frame:SetSize(256, 256) -- Задаём размер
Frame:SetPos(ScrW()/2-Frame:GetWide()/2, ScrH()/2-Frame:GetTall()/2) -- Задаём позицию (стандартная) | [ X = Ширина экрана, делённая на 2 - Ширина панели, делённая на 2; Y = Высота экрана, делённая на 2 - Высота панели, делённая на 2 ]

local DLeft = vgui.Create( "DButton", Frame ) -- Создаём элемент (кнопку) и прикрепляем к панели
DLeft:SetText("Влево") -- Задаём текст
DLeft:Dock(LEFT) -- Выставляем позицию и размер (https://files.facepunch.com/wiki/files/panel_dock_example_2.png)
DLeft.DoClick = function() -- Функция выполняется при клике на кнопку
    Frame:MoveTo(0, Frame:GetTall()*2, 3) -- Плавное перемещение влево | [ X = 0; Y = Высота панели, умноженная на 2; Время, за которое переместится = 3 (чем ниже, тем быстрее) ]
    RunConsoleCommand("say", "Перемещение влево") -- Выполнение консольной комманды
end

local DRight = vgui.Create( "DButton", Frame )  -- Создаём элемент (кнопку) и прикрепляем к панели
DRight:SetText("Вправо") -- Задаём текст
DRight:Dock(RIGHT) -- Выставляем позицию и размер (https://files.facepunch.com/wiki/files/panel_dock_example_2.png)
DRight.DoClick = function() -- Функция выполняется при клике на кнопку
    Frame:MoveTo(ScrW()-Frame:GetWide(), Frame:GetTall()*2, 3) -- Плавное перемещение вправо | [ X = Ширина экрана - Ширина панели; Y = Высота панели, умноженная на 2; Время, за которое переместится = 3 (чем ниже, тем быстрее) ]
    RunConsoleCommand("say", "Перемещение вправо") -- Выполнение консольной комманды
end

local DUp = vgui.Create( "DButton", Frame ) -- Создаём элемент (кнопку) и прикрепляем к панели
DUp:SetText("Вверх") -- Задаём текст
DUp:Dock(TOP) -- Выставляем позицию и размер (https://files.facepunch.com/wiki/files/panel_dock_example_2.png)
DUp.DoClick = function() -- Функция выполняется при клике на кнопку
    Frame:MoveTo(ScrW()/2-Frame:GetWide()/2, 0, 3) -- Плавное перемещение вверх | [ X = Ширина экрана, делённая на 2 - Ширина панели, делённая на 2; Y = Высота панели, умноженная на 2; Время, за которое переместится = 3 (чем ниже, тем быстрее) ]
    RunConsoleCommand("say", "Перемещение вверх") -- Выполнение консольной комманды
end

local DDown = vgui.Create( "DButton", Frame ) -- Создаём элемент (кнопку) и прикрепляем к панели
DDown:SetText("Вниз") -- Задаём текст
DDown:Dock(BOTTOM) -- Выставляем позицию и размер (https://files.facepunch.com/wiki/files/panel_dock_example_2.png)
DDown.DoClick = function() -- Функция выполняется при клике на кнопку
    Frame:MoveTo(ScrW()/2-Frame:GetWide()/2, ScrH()-Frame:GetTall(), 3) -- Плавное перемещение вниз | [ X = Ширина экрана, делённая на 2 - Ширина панели, делённая на 2; Y = Высота экрана - Высота панели; Время, за которое переместится = 3 (чем ниже, тем быстрее) ]
    RunConsoleCommand("say", "Перемещение вниз") -- Выполнение консольной комманды
end

local DCenter = vgui.Create( "DButton", Frame ) -- Создаём элемент (кнопку) и прикрепляем к панели
DCenter:SetText("В центр") -- Задаём текст
DCenter:Dock(FILL) -- Выставляем позицию и размер (https://files.facepunch.com/wiki/files/panel_dock_example_2.png)
DCenter.DoClick = function() -- Функция выполняется при клике на кнопку
    Frame:MoveTo(ScrW()/2-Frame:GetWide()/2, ScrH()/2-Frame:GetTall()/2, 3) -- Плавное перемещение в центр | [ X = Ширина экрана, делённая на 2 - Ширина панели, делённая на 2; Y = Высота экрана, делённая на 2 - Высота панели, умноженная на 2; Время, за которое переместится = 3 (чем ниже, тем быстрее) ]
    RunConsoleCommand( "say", "Перемещение в центр" ) -- Выполнение консольной комманды
end
 
Сверху Снизу