【发布时间】:2018-12-03 03:22:15
【问题描述】:
我是 Roblox 脚本的新手(虽然我过去做过很多 Unity 开发)基本上我试图让用户四处飞行。将重力变为0,并在下面编写了ControlScript。我想让 Space/Shift 允许人们上/下。出于某种原因,这只是不会修改 y 轴位置。我一直在摆弄这个大约 4 个小时,但我找不到问题所在。
提前感谢您的帮助!
-- Declare variables
local userInputService = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local player = game.Players.LocalPlayer
local moveVector = Vector3.new(0,0,0)
-- Handle inputBegan event (when player first presses a key)
userInputService.InputBegan:connect(function(inputObject)
if player.Character then
if inputObject.KeyCode == Enum.KeyCode.W then
moveVector = moveVector + Vector3.new(0,0,-1)
end
if inputObject.KeyCode == Enum.KeyCode.A then
moveVector = moveVector + Vector3.new(-1,0,0)
end
if inputObject.KeyCode == Enum.KeyCode.S then
moveVector = moveVector + Vector3.new(0,0,1)
end
if inputObject.KeyCode == Enum.KeyCode.D then
moveVector = moveVector + Vector3.new(1,0,0)
end
if inputObject.KeyCode == Enum.KeyCode.Space then
moveVector = moveVector + Vector3.new(0,-1,0)
end
if inputObject.KeyCode == Enum.KeyCode.LeftShift then
moveVector = moveVector + Vector3.new(0,1,0)
end
end
end)
-- Handle inputEnded event (when player releases a key)
userInputService.InputEnded:connect(function(inputObject)
if player.Character then
if inputObject.KeyCode == Enum.KeyCode.W then
moveVector = moveVector + Vector3.new(0,0,1)
end
if inputObject.KeyCode == Enum.KeyCode.A then
moveVector = moveVector + Vector3.new(1,0,0)
end
if inputObject.KeyCode == Enum.KeyCode.S then
moveVector = moveVector + Vector3.new(0,0,-1)
end
if inputObject.KeyCode == Enum.KeyCode.D then
moveVector = moveVector + Vector3.new(-1,0,0)
end
if inputObject.KeyCode == Enum.KeyCode.Space then
moveVector = moveVector + Vector3.new(0,1,0)
end
if inputObject.KeyCode == Enum.KeyCode.LeftShift then
moveVector = moveVector + Vector3.new(0,-1,0)
end
end
end)
-- On renderstepped update the character's motion based on what keys
-- are currently being pressed
runService.RenderStepped:connect(function()
if player.Character then
player:Move(moveVector, true)
end
end)
【问题讨论】:
-
这可能是由于网络权限。您可能需要使用事件与服务器通信,然后处理服务器上的移动。编辑:Player:Move 可能不适用于 Y 轴,因此您可能想要添加速度。
-
谢谢,这成功了:) 在下面发布了最终脚本