Kullanıcının kamerasını kontrol et

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Kullanıcının dünyayı görme şekli, bir Camera nesnesi ile temsil edilir. Oyununuza uygun şekilde kameranın davranışını çeşitli yollarla değiştirebilirsiniz. Örneğin, kamera, bir canavar yanından geçerken sarsılmak gibi dünyadaki olaylara tepki verebilir veya bir yan kaydırıcıda olduğu gibi kullanıcı karakterinin yanına kilitlenebilir.

Birinci şahıs kamerası oluşturma

Birinci şahıs kamerası, kameranın karakterin başı ile kilitli kaldığı bir görünüm olup, gerçek hayata daha yakındır. Kullanıcının dünyaya tamamen dalmasını sağlamak için, nişancı ve hikaye oyunlarında yaygındır.

Birinci Şahıs Kamerası
Klasik Roblox Kamerası

Studio'da, StarterPlayer nesnesi, kullanıcının kamerasını etkileyen bir dizi özellik içerir. CameraMode özelliği, kameranın nasıl davrandığını belirler.

  1. StarterPlayer'ı seçin.

    alt

  2. CameraMode'u LockFirstPerson olarak değiştirin. Bu, kullanıcının kamerasının başından uzaklaşmamasını sağlar.

    alt

  3. Birinci şahıs kamerasını görmek için oyunu test edin.

Yan kaydırma kamerası oluşturma

Yan kaydırma görünümü, kamerayı karakterin yanına göre sabit bir konumda tutarak dünyaya iki boyutlu bir his verir.

alt

Kamerayı betimleme

  1. StarterPlayer'ı genişletin ve StarterPlayerScripts'e CameraManager adında bir LocalScript ekleyin.

    alt

  2. Script'in en üstüne, Players servisini almak için aşağıdaki kod örneğini kopyalayıp yapıştırın ve ardından yeni bir değişkende yerel kullanıcıyı alın.

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
  3. updateCamera adında bir fonksiyon oluşturun. Bu, kameranın yeni bir konumunu almak ve ayarlamak için gereken mantığı tutar.

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local function updateCamera()
    end
  4. Fonksiyonun içinde, kullanıcının karakter modelini alın ve bir if ifadesi kullanarak var olup olmadığını kontrol edin.

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local function updateCamera()
    local character = player.Character
    if character then
    end
    end

Kamerayı yönlendirme

Tüm karakter modelleri, karakterin dünyadaki konumunu almak için kullanılabilecek HumanoidRootPart adında bir parçayı içerir. Bu, kameranın baktığı konumu ayarlar.

  1. FindFirstChild kullanarak HumanoidRootPart'ı alın ve bir if ifadesi kullanarak var olup olmadığını kontrol edin.

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local function updateCamera()
    local character = player.Character
    if character then
    local root = character:FindFirstChild("HumanoidRootPart")
    if root then
    end
    end
    end
  2. HumanoidRootPart'ın konumu aslında kullanıcının başının 2 birim altında. Bunu düzeltmek için, kökün konumuna 2 birim yüksekliğinde yeni bir Vector3 ekleyin.

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    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)
    end
    end
    end

Kameranın konumunu ayarlama

Kameranın ayrıca bir konuma ihtiyacı vardır. Kullanıcının görünümüne 2D yan kaydırma görünümü vermek için, kamera karakterin yanına doğrudan bakmalıdır. Kamerayı kullanıcının yanına yerleştirmek için, kameranın konumunun sadece Z eksenine derinlik ekleyin ve bir Vector3 kullanın.

local player = Players.LocalPlayer
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)
end
end
end

CurrentCamera'ı güncelleme

Artık kameranın konumu ve kameranın hedefi için değişkenler hazır olduğuna göre, kameranın konumunu güncelleme zamanı. Kullanıcının kamerasına, Workspace'in CurrentCamera özelliği aracılığıyla erişebilirsiniz. Kameranın konumunu belirlemek için bir CFrame özelliği vardır.

Kamerayı güncellemek için CFrame.lookAt() kullanabilirsiniz. Bu, iki konum alır ve ilk konumda ikinciye doğru bakan bir CFrame oluşturur. cameraPosition'da konumlandırılmış ve rootPosition'a doğru bakan bir CFrame oluşturmak için CFrame.lookAt() kullanın.

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

Kamerayı senkronize etme

Son adım, bu fonksiyonu sürekli çalıştırarak kamerayı kullanıcının hareketiyle senkronize tutmaktır. Kullanıcının gördüğü görüntü sürekli yenilenmektedir. Tüm gerekli hesaplamaları yapmak için geçen kısa süreye render step denir.

RunService:BindToRenderStep() her karede bir fonksiyonu çalıştırmayı basit hale getirir ve bu üç parametreyi kabul eder:

  • name - Bu bağlamanın adı, benzersiz olmalıdır, böylece aynı adı taşıyan diğer fonksiyonlarla çakışmaz.
  • priority - Sayı ne kadar yüksekse, öncelik o kadar yüksektir. Bu fonksiyon, Roblox'un varsayılan kamera güncellemesinden sonra çalışmalıdır, bu nedenle öncelik, iç kameranın RenderPriority'sinden 1 seviye daha yüksek olarak ayarlanır.
  • function - Render adımına bağlanacak fonksiyon.
  1. RunService:BindToRenderStep() kullanarak updateCamera fonksiyonunu render adımına bağlayın.

    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)
  2. Kodunuzu test edin. Karakterinizi yan yana hareket ettirmek için A ve D tuşlarını kullanın.

İzometrik kamera oluşturma

Kullanıcının konumunu alıp kameranın konumunu her karede güncelleme temel yapısı, izometrik kamera gibi birçok diğer kamera stiline uyarlanabilir. İzometrik kamera, kullanıcı karakterine doğru hafif aşağı bakan sabit bir açıya sahip 3D bir görünüm sunar.

alt

Konumu ve görünümü değiştirme

  1. Önceki örnekteki kodu kullanarak, cameraPosition'ı tüm 3 boyuta aynı miktarı ekleyecek şekilde değiştirin.

    alt

    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)
  2. Kameranın FieldOfView özelliğini değiştirmek, kamerayı içeri ve dışarı zoom yapıyormuş gibi simüle eder, bu da görünümü daha düz bir hale getirebilir. Zoom yapmak için 20 değerine ayarlamayı deneyin ve kullanıcının uzaklığını artırarak telafi edin.

    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()

Kameranın davranışını değiştirerek, oyununuz için tamamen yeni bir görünüm elde edebilirsiniz. Aynı script ile bir üstten görünüm kamerası elde etmek için cameraPosition'ı değiştirmeyi deneyin. Beğendiğiniz bir sonuç almak için ayarları değiştirmeyi deneyin!

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.