Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает код в Roblox Studio(Lua)

Арсений Пресняков Знаток (380), на голосовании 1 день назад
Я хочу что бы при нажатие на клавишу менялось местоположение модели, я написал простенький код и он не работает, помогите разобраться.

local model = game.Workspace.firstplayer
local pos1 = model:GetPivot()
local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(Key)
if Key.KeyCode == Enum.KeyCode.D
then
model:PivotTo(pos1 * CFrame.new (0, 0, -5))
end
end)
Голосование за лучший ответ
ivan866_z Просветленный (20202) 1 месяц назад
  1. UserInputService работает только на стороне клиента (в локалскрипте)
  2. далее, когда ты перенесешь код в локалскрипт и положишь его, например, в сервис StarterPlayerScripts, тебе нужно подождать пока прогрузится воркспейс, для этого надо писать game.Workspace:WaitForChild("firstplayer")
  3. и далее, если ты будешь пытаться менять позицию некого объекта на стороне клиента (из локалскрипта), то она будет меняться ТОЛЬКО у тебя, и и сервер, ни остальные клиенты видеть это изменение не будут (оно не будет реплицироваться)
  4. чтобы оно реплицировалось, ты либо должен уведомить сервер о таком изменении через RemoteEvent / RemoteFunction (но не передавай при этом реальные координаты, иначе это будет лазейка для эксплойтов), либо поменять владение объектом (метод SetNetworkOwnership())

и последнее, если под переменной firstplayer полагается использовать модельку другого игрока - то это вообще не так делается; модель игрока берется через Player.Character или Player.Character.PrimaryPart, а сама его позиция предпочтительно меняется через метод MoveTo() или WalkTo()
Арсений ПресняковЗнаток (380) 1 месяц назад
Спасибо большое! У меня ещё один вопрос, а ты не знаешь как сделать так что бы при нажатии можно было ещё раз нажать, потому что у меня после нажатие второй раз не получаеться
Арсений Пресняков, Вы можете попробовать заменить строчку model:PivotTo(pos1 * CFrame.new (0, 0, -5)) на
 model:PivotTo(model:GetPivot() * CFrame.new (0, 0, -5))  
Или можно рассмотреть вариант с использованием Model: TranslateBy
Похожие вопросы