@melodze

Как сделать размещение объекта по сетке?

Суть режима. У меня будет кибер клуб и в нём нужно размещаться игровые столы. Как сделать сетку для размещения этих столов ?
Находил видосы где разъясняют как сделать размещение объектов на каком то расстояние от себя, но про сетку вообще нету инфы.
Буду рад если поможете :)
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Gran-IT
Смотрите, я тоже пытаюсь сделать размещение по сетке, если это то что вы имеете ввиду, то вам просто нужно добавить компонент ClickDetector к объекту а потом в скрипте проверять наведение на этот объект через

meshname.ClickDetector.MouseHoverEnter(function(player)

--устанавливаем позицию объекта, который должен передвигаться по сетке

movablemeshname.Position = meshname.Position

--получается, что при наведении мыши на определенный объект, будет присваиваться позиция объекта на
--который навели, объекту, который должен перемещаться по сетке
--также надо учитывать, что элемент, который должен перемещаться по сетке, назовем его PartGrid. будет
--находиться в объекте, на который наводят, назовем его PartHover. Так вот, что-бы этого не происходило, надо заменить строку кода с присваиванием позиции на что-то на подобие этого

movablemeshname.Position = Vector3.new(meshname.Position.X, meshname.Position.Y+value, meshname.Position.Z)

--value это значение, на которое увеличивается позиция объекта по Y ( по вертикали ), я вписывал методом проб
--и ошибок, но я думаю что можно вывести формулу или посчитать. Так вот, теперь Нашему PartGrid присваивается
--позиция элемента PartHover по оси икс, зед и игрек + value, это означает, что объект PartGrid будет находится не в PartHover. а "на нем".

end)

можете добавить функцию MouseHoverEnded если хотите например вывести сообщение или закончить расположение объекта.

Надеюсь помог, что знал, то рассказал.
Ответ написан
Комментировать
@yarmr
Вы можете использовать округление
1. Вам надо определить место, где луч из точки мыши пересекается с объектом.
--Например вот так
local RemoteEvent = workspace.RemoteEvent

function MousePos()
    RemoteEvent:FireServer(game.Players.LocalPlayer:GetMouse().Hit.Position.X, 
    game.Players.LocalPlayer:GetMouse().Hit.Position.Z)
end
--В game.Workspace должен находиться RemoteEvent для перехвата из глобальной функции
--Функция должна быть локальной и находиться в игроке
--В данном выше примере не назначен триггер вызывающий функцию вы можете использовать любую подходящею

2. На стороне сервера в желательно game.ServerScriptService должен быть скрипт для перехвата
local RemoteEvent = workspace.RemoteEvent
RemoteEvent.OnServerEvent:Connect(function(player, X, Z)
    --В этой фунции получаеться игрок X и Z где луч из точки мыши пересекается с объектом
end)

Надеюсь помог.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы