Керування камерою користувача

Погляд користувача на світ представлений об'єктом Camera . Ви можете змінювати поведінку камери відповідно до свого досвіду різними способами. Наприклад, камера може реагувати на події у світі, такі як тремтіння, коли монстр проходить повз, або заблокована збоку від персонажа користувача, як у бічній прокрутці.

Створення камери від першої особи (First-Person Camera) 

Камера від першої особи – це вид, де камера залишається заблокованою з головою персонажа, що більш точно відповідає реальному житті. Це поширене явище в шутерах і сюжетах, де мета полягає в тому, щоб користувач відчув себе зануреним у світ.
Камера від першої особи
Класична камера Roblox

У Studio об’єкт StarterPlayer містить низку властивостей, які впливають на камеру користувача. Властивість CameraMode визначає, як поводиться камера.

Виберіть StarterPlayer .
Змініть CameraMode на LockFirstPerson . Це гарантує, що камера користувача не відійде від його голови.
Тестуйте, щоб побачити камеру від першої особи в дії.

Якщо під час тестування курсор застряг у центрі екрана, ви можете звільнити мишу, натиснувши клавішу Esc або Shift F5 , щоб завершити тест.

Створення камери бічної прокрутки (Side-Scrolling Camera)

Перегляд із боковим прокручуванням утримує камеру у фіксованому положенні відносно боку персонажа, надаючи світу відчуття двовимірності.
Розгорніть StarterPlayer і в StarterPlayerScripts додайте LocalScript під назвою CameraManager .
Скопіюйте та вставте наведений нижче зразок коду:

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local CAMERA_DEPTH = 24
local HEIGHT_OFFSET = 2

local function updateCamera()
    local character = player.Character
    if character then
        local root = character:FindFirstChild("HumanoidRootPart")
        if root then
            local rootPosition = root.Position + Vector3.new(0, HEIGHT_OFFSET, 0)
            local cameraPosition = Vector3.new(rootPosition.X, rootPosition.Y, CAMERA_DEPTH)
            camera.CFrame = CFrame.lookAt(cameraPosition, rootPosition)
        end
    end
end

RunService:BindToRenderStep("SidescrollingCamera", Enum.RenderPriority.Camera.Value + 1, updateCamera)

Перевірте свій код. Використовуйте клавіші A і D , щоб рухати персонажа з боку в бік.

Створення ізометричної камери (Isometric Camera)

Базову структуру отримання позиції користувача та оновлення позиції камери в кожному кадрі можна адаптувати до багатьох інших стилів камери, наприклад ізометричної камери. Ізометрична камера — це тривимірне зображення, спрямоване трохи вниз під фіксованим кутом до персонажа користувача.

Зміна позиції та вигляду

Використовуючи код із попереднього прикладу, змініть cameraPosition , щоб додати однакову кількість до всіх 3 вимірів.

local function updateCamera()
    local character = player.Character
    if character then
        local root = character:FindFirstChild("HumanoidRootPart")
        if root then
            local rootPosition = root.Position + Vector3.new(0, HEIGHT_OFFSET, 0)
            local cameraPosition = rootPosition + Vector3.new(CAMERA_DEPTH, CAMERA_DEPTH, CAMERA_DEPTH)
            camera.CFrame = CFrame.lookAt(cameraPosition, rootPosition)
        end
    end
end

RunService:BindToRenderStep("IsometricCamera", Enum.RenderPriority.Camera.Value + 1, updateCamera)


Зміна властивості FieldOfView камери імітує її збільшення та зменшення, що може надати огляду більш плаский вигляд. Спробуйте встановити значення 20 , щоб збільшити масштаб, і збільшити відстань камери від користувача, щоб компенсувати це.

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local CAMERA_DEPTH = 64
local HEIGHT_OFFSET = 2

camera.FieldOfView = 20

local function updateCamera()


Змінивши спосіб поведінки камери, ви можете отримати абсолютно новий вигляд для свого досвіду. Подивіться, чи можна змінити CameraPosition , щоб отримати камеру зверху вниз за допомогою того самого сценарію. Спробуйте налаштувати налаштування, щоб отримати результат, який вам подобається!