我正在尝试使用教程创建一个俯视摄像头,这是链接。https:/education.roblox.comen-usresourcesarcade-game-top-down-camera。
这是我的代码。
local RunService = game:GetService("RunService")
local camera = workspace.CurrentCamera
local player = game.Players.LocalPlayer
local CAMERA_OFFSET = Vector3.new(-1,20,0)
camera.CameraType = Enum.CameraType.Scriptable
local function onRenderStep()
if player.Character then
local playerPosition = player.Character.HumanoidRootPart.Position
local cameraPosition = playerPosition + CAMERA_OFFSET
camera.CoordinateFrame = CFrame.new(cameraPosition, playerPosition)
print("player position = " .. playerPosition.X .. " : " .. playerPosition.Y .. " : " .. playerPosition.Z)
print("camera position = " .. cameraPosition.X .. " : " .. cameraPosition.Y .. " : " .. cameraPosition.Z)
end
end
RunService:BindToRenderStep("Camera", Enum.RenderPriority.Camera.Value, onRenderStep)
这段代码将摄像机设置在玩家上方,符合预期。然而,当我改变CAMERA_OFFSET的值(例如将Y从20改为200),并重新启动游戏时,摄像机的位置与之前的值相比没有改变。调试玩家和摄像机的位置,我可以看到偏移是正确的。
player position = 4.3593798181973e-05 : 2.8005499839783 : -1.193955540657e-05
camera position = -0.99995642900467 : 22.800550460815 : -1.193955540657e-05
player position = 4.3593798181973e-05 : 2.8005499839783 : -1.193955540657e-05
camera position = -0.99995642900467 : 22.800550460815 : -1.193955540657e-05
player position = 4.3593798181973e-05 : 2.8005499839783 : -1.193955540657e-05
camera position = -0.99995642900467 : 22.800550460815 : -1.193955540657e-05
我的最终目标是将摄像头固定在玩家上方(现在还可以通过鼠标滚动将其上下移动),但首先要了解如何将其设置在正确的高度。
如果你把一个
wait()
在你的脚本顶部,它将完全按照你的要求来做。
我不确定这是否是正确的方法,或者你是否应该等待其他对象完成加载。没有任何形式的错误信息,我也找不到任何文档。
使用 WaitForChild()
这样我们就可以确保所有的对象都被加载进来。
local camera = workspace:WaitForChild("CurrentCamera")
local player = game.Players:WaitForChild("LocalPlayer")