Как установить высоту камеры

Я пытаюсь создать камеру сверху вниз с помощью учебника, вот ссылка: https://education.roblox.com/en-us/resources/arcade-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) и перезапустил игру, камера не изменила положение cp по сравнению с тем, где она была с предыдущим значением. Отлаживая положение плеера и камеры, я вижу, что смещение было добавлено правильно:

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

Моя конечная цель - зафиксировать камеру над игроком (сейчас ее все еще можно перемещать вверх и вниз с помощью прокрутки мыши), но сначала я должен понять, как установить ее на нужной высоте.


person ChrisPBcn    schedule 11.05.2020    source источник


Ответы (1)


Если поставить

wait()

в верхней части скрипта он сделает именно то, что вы хотите.

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

person Night94    schedule 12.05.2020