Camera

Artık kullanılmayanları göster

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

Çoğaltılmamış

Kamera nesnesi, 3D dünyasının bir görüntüsünü tanımlar. Bir çalışan deneyiminde, her klienin kendi Kamera nesnesine sahiptir, bu klienin yerel Class.Workspace ile erişilebilir Workspace özelliği aracılığıyla.

En önemli kameralar özellikleri şunlarıdır:

  • Camera.CFrame , kamera'nın konumunu ve yönünü temsil eder.

  • deneyimin kamerası tarafından okunur ve kameranın her kareyi nasıl güncelleneceğini belirler. Class.Camera.CameraType

  • Camera.CameraSubject , deneyimin kamerası tarafından okunur ve kamera tarafından takip etedilecek olan nesneyi belirler.

  • Camera.FieldOfView ile görülebilir dünyanın görünür bir kısmını temsil eder.

  • Camera.Focus ile kameranın baktığı noktayı temsil eder. Bu özellik ayarlandığında önemlidir, çünkü bazı görüntüler daha ayrıntılı olacak ve merkez noktasına daha sık güncellenecek.

Kamera'nın davranışını ayarlamak ve özelleştirmek için Kamerayı Özelleştirme bakın.

Özet

Özellikler

  • Paralel oku

    Class.Camera ın konumunu ve yönünü belirleyen Camera kaydı.

  • Class.Humanoid veya BasePart bu, Camera konusudur.

  • Kameranın Enum.CameraType ını okuyacak olan kodları belirtir.

  • Çoğaltılmamış
    Paralel oku

    Kameranın diyagonal görüş alanının açısını ayarlar.

  • Paralel oku

    Kameranın垂直 görüş alanının açısını ayarlar.

  • Class.Camera 'in görüntü büyüklüğü değişikliğine karşı görüş açısını belirleyen değeri belirleyin.

  • Paralel oku

    Roblox'un grafik sistemleri tarafından önceliklendiği 3D alanını ayarlar.

  • Paralel oku

    Bir VR cihazı kullanarak bir oyuncunun kafa hareketini otomatik olarak izleyip izlemeyeceğini ayarlar.

  • Paralel oku

    VR'yi kullanırken kullanıcının dünya perspektifinin ölçeğini ayarlar.

  • Çoğaltılmamış
    Paralel oku

    Kameranın görüş alanının boyunca kamera alanının açısını ayarlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kameranın yakın klip çağırma uçağının yanındaki kamera ile ilgili negatif Z ofsetini, in studs, açıklar.

  • Oyuncu bir VR cihazı kullanırken Camera.CFrame özelliğinden eğilme ve yatış uygulanıp uygulanmayacağını geçersiz kılar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Roblox'un bir klienindeki cihaz güvenli alanının boyutları.

Yöntemler

Özellikler

CFrame

Paralel oku

Bu özellik, CFrame kamerasının pozisyonunu ve yönünü belirten Camera öğüdür. Not edin ki bazı dönüşümler, VR cihazları kullanırken kafanın dönüşü gibi, bu öğüde y

Bu özelliği ayarlayarak kamerayı hareket ettirebilirsiniz. Ancak, varsayılan kamera kayıtları da bunu ayarlar, bu yüzden ya:

  • Kamerayı Camera.CameraType ile Enum.CameraType.Scriptable şeklinde ayarlayın, böylece varsayılan kameraların CFrame ını güncellenmez. Bu yöntem en iyi durumda basittir ve çoğu durumda önerilir.

  • Varsayılan kameraların kayıtlarını alternatifleriyle tamamen değiştirir. Bu yaklaşım sadece varsayılan kameraların işlevselliğini gerektirmezse tavsiye edilir.

Class.Camera 'ın konumlanması ve yönlendirilmesi için en işlevsel yol, CFrame.lookAt() kümesini kullanmaktır. Aşağıdaki örnekte, Camera Datatype.Vector3.new(0,


local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
local pos = Vector3.new(0, 10, 0)
local lookAtPos = Vector3.new(10, 0, 0)
workspace.CurrentCamera.CFrame = CFrame.lookAt(pos, lookAtPos)

Kameranın yukarıdaki gösterilen şekilde yerleştirilebilir olmasına rağmen, bunu bir CFrame dan diğerine huzur içinde hareket ettirmek isteyebilirsiniz. Bunun için, herhangi bir şeyi yapabilirsiniz:

  • Kameranın konumunu/yönünü her kareyle RunService:BindToRenderStep() ve CFrame:Lerp() yöntemiyle ayarlayın.

  • Kameranın konumunu/yönünü animasyon ettiğini gösteren bir Tween oluşturun ve oynayın:


    local Players = game:GetService("Players")
    local TweenService = game:GetService("TweenService")
    local camera = workspace.CurrentCamera
    camera.CameraType = Enum.CameraType.Scriptable
    local player = Players.LocalPlayer
    local character = player.Character
    if not character or character.Parent == nil then
    character = player.CharacterAdded:Wait()
    end
    local pos = camera.CFrame * Vector3.new(0, 20, 0)
    local lookAtPos = character.PrimaryPart.Position
    local targetCFrame = CFrame.lookAt(pos, lookAtPos)
    local tween = TweenService:Create(camera, TweenInfo.new(2), {CFrame = targetCFrame})
    tween:Play()

CameraSubject

Paralel oku

KamerasonuSubesi çeşitli Instances kabul eder.Varsayılan kameralar kullanılabilir ayarlara cevap olarak farklı yanıt verir:

  • Varsayılan olarak, kamerası kılıcının Humanoid , insanoid'in mevcut durumunu ve Humanoid.CameraOffset 'i göz önünde bulundurur.

  • Class.BasePart olarak ayarlandığında, kamera kayıtları pozisyonunu takip eder, VehicleSeats durumunda bir yatay ofsetle.

KamerasıSubject , nil ile ayarlanamıyor. Bunu yapmaya çalışmak, onu daha önceki değerine döndürecektir.

KameraSubesi ı varsayılan değerine sıfırlamak için yerel karakterinin Humanoid ına ayarlanır:


local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local function resetCameraSubject()
if workspace.CurrentCamera and localPlayer.Character then
local humanoid = localPlayer.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
workspace.CurrentCamera.CameraSubject = humanoid
end
end
end

CameraType

Paralel oku

Varsayılan Roblox kamerası senaryolarının birkaç içerleştirilmiş davranışı vardır. Bu özelliği ayarlamak, çeşitli Enum.CameraType davranışları arasında doğru bir şekilde çalışması için bir Camera.CameraSubject gerektirir.

Varsayılan kameralar kamerayı hareket ettirmez veya güncellemek için KameratürüEnum.CameraType.Scriptable ın ile ayarlanması durumunda kamerayı Camera.CFrame ile hizalayacaktır. For more information on positioning and orienting the camera manually, see 2> Class.Camera.CFrame2> .

Tüm KameraTipi ayarları except Enum.CameraType.Scriptable , 1> Class.Camera.Focus1> ın ayarlandığı pozisyonunu temsil eden öğe.

DiagonalFieldOfView

Çoğaltılmamış
Paralel oku

Kameranın diyagonal yönünde görebileceği dereceleri belirler (görüntü alanının bir köşesinden diğer köşesine). Görüntü alanının genel açıklaması için FieldOfView bakınız.

Not that DiagonalFieldOfView represents the viewport that is visible by the Camera渲ering into the fullscreen area which may be occluded by notches or screen cutouts on some devices. See Class. Camera.ViewportSize|ViewportSize for more information.

FieldOfView

Paralel oku

Görüntü Alanı özelliği, kameranın yatay yönünde kaç derece görebileceğini ayarlar. Bu özellik, 1 ve 120 derece arasında kaydedilmiştir ve 70 olarak varsayılır. Çok düşük veya çok yüksek görüntü alanları oyuncuları yönlendirebilir.

Üniforma boyutlandırmasının zorunlu olduğunu not edin, yani yatay ve yüzsel bakış açısı her zaman ekranin yüzdesiyle ilgilidir.

FieldOfView (FOV) için önerilen kullanımlar şunları içerir:

  • FOV'yu azaltarak büyütme izlenimi vermek, örneğin binokul kullanırken.
  • Oyuncu "koşma" modunda olduğunda FOV'yi artırırak kontrolsüzlük görünümünü vermek için.

Not that FieldOfView represents the field of view that is visible by the Camera渲染 into the fullscreen area which may be occluded by notches or screen cutouts on some devices. See Class.Camera. ViewportSize|ViewportSize for more information.

FieldOfViewMode

Paralel oku

Kameranın görüş alanı (FOV) güncellenmelidir, böylece ViewportSize değişikliklerini yansıtabilir. FieldOfViewMode değeri, değişken FOV değerinin tutulmasını sağlar.

Örneğin, bu özellik Enum.FieldOfViewMode.Vertical olarak ayarlandığında, horizontallar FOV'u görüntü büyütülürken güncellenir, ancak yataylar FOV'u korur. Bu özellik Enum.FieldOfViewMode.Diagonal olarak ayarlandığında, hem yatay hem de yatay FOV'u korumak için değiştirile

Focus

Paralel oku

Motorun yaptığı grafik işlemleri, ışıkları güncelleme gibi, zaman veya hesaplama gerektirebilir. Kameranın Odaklanma özelliği, bu işlemleri yerine getirirken 3D alanındaki hangi alanı önceliklendirileceğini motorun PointLights özelliğine bildirir. Örneğin,

Roblox kamerası kayıt işleme işlevleri, Odak</

Odaklanma kameranın konum veya yönü üzerinde hiçbir etkisi yok; bunun için Camera.CFrame bakın.

HeadLocked

Paralel oku

Kameranın bir VR cihazı kullanarak oyuncunun kafa hareketini otomatik olarak izleyip izlemeyiğini ayarlar. true (Varsayılan), motor, Camera.CFrame ile kullanıcının kafasının takip edilmiş olmasını sağ


local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)
headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale
-- Bu, Camera:GetRenderCFrame() ile eşdeğer olacaktır
local renderCFrame = camera.CFrame * headCFrame

Bu özelliği şu nedenlerden dolayı etkisiz bırakmanız tavsiye edilir:

  • Eşdeğer bir kafa izleme çözümü eklenmezse, oyuncular hareket hastalığı deneyimleyebilir.
  • Roblox motoru Kafa Kilitli doğrulandığında gecikme optimizasyonları yapar.

Ayrıca bakın

  • VRService:GetUserCFrame() ile kafanın CFrame kafasını alabilirsin.
  • VRService:RecenterUserHeadCFrame() ile, kafayı mevcut VR cihazının pozisyonuna ve yönüne yaklaştırır.
  • Class.Camera:GetRenderCFrame() işlevi, kullanıcının kafasının Camera.CFrame ile kombine edilmiş olarak döndüğünü için kullanıcının kafasının CFrame ile kombine edilmiş olarak döndüğünü için kullanıcının kafasını döndürür.

HeadScale

Paralel oku

Kafa Ölçeği VR'yi kullanırken kullanıcının dünya perspektifinin büyüklüğüdür.

VR'deki 1 studun boyutu 0.3 meters / HeadScale , yani daha büyük HeadScale değerleri VR cihazlarında kullanıcının perspektifinde dünyanın daha küçük görünmesiyle dünyanın daha küçük görünmesi için daha büyük bir değer

Bu özellik VRService.AutomaticScaling tarafından otomatik olarak kontrol edilir, oyuncunun perspektifini avatarının boyutuyla uyarlar. Eğer kendi başına HeadScale yi kontrol etmeyi planlıyorsanız veya özelleştirilmiş karakterleri kullanıyorsanız, Class

Bu özellik Humanoid.HeadScale ile karıştırılmamalıdır, bir NumberValue ebeveyni olarak bir Humanoid kontrol etmek için.

MaxAxisFieldOfView

Çoğaltılmamış
Paralel oku

MaxAxisFieldOfView özelliği, kameranın en uzun görüntü alanı ekseninde kaç derece görebileceğini ayarlar.

En uzun eksen yatay eksen olunca, bu özellik FieldOfView özelliğiyle benzer davranır. Bu genellikle bir cihaznın portre eğilimi içindeyken olur. Bu bir yerleşim eğilimiindeyken, en uzun eksen yatay eksen olacaktır; bu durumda, özellik yatay görüş alanını a

NearPlaneZ

Salt Okunur
Çoğaltılmamış
Paralel oku

Kameranın yakın alanı özelliği, kamera'nın yakın alanının çekim uçağından ne kadar uzakta olduğunu, metre olarak tarif eder. Yakın alan uçağı, kamera'nın Camera.CFrame önünd

Diagram showing how the NearPlaneZ clips (does not render) 3D content between the plane and the camera.

VRTiltAndRollEnabled

Paralel oku

Bu özellik, oyuncu bir VR cihazı kullanırken Camera.CFrame özelliğinden eğilme ve yatma uygulayıp uygulamayacağını değiştirir.

Hareket hastalığını önlemek için, horizont seviyeolmalıdır. Bir VR cihazı kullanırken oyuncunun görüşünü eğip ve yuvarlayarak, oyuncunun fiziksel alanı ile görüntülediği sanal alan arasında bir bağlantıyı kesebilir. Görünümü bozan yukarı giden yönü değiştirmek oyuncuların dengeyi kaybetmesine veya dizilik yaşanmas

Bu nedenlerden ötürü, bu özelliği test ettiğinizden emin olun, aksi takdirde deneyinizin bu etkiler için genellikle devre dışı bırakılması tavsiye edilir. Tilt ve roll'u açık bırakırsanız bile, oyuncunun her zaman istikrarlı bir referans çerçevesi, örneğin bir araç içi veya bir zemin olarak sağlayabilir.

ViewportSize

Salt Okunur
Çoğaltılmamış
Paralel oku

ViewportSize , mevcut ekranda cihaz güvenli alanının boyutlarını iade eder. Bu alan bir dikdörtgendir ve Roblox üst kutu alanını içerir ancak herhangi bir cihaz kaydırma veya ekran kesintileri içermez. ViewportSize ün birim

Mobile device screen with cutout showing device safe area.

Yukarıdaki gibi, ViewportSize , keskin kenarlı veya çukurlu ekranlardaki görüntü alanı

Son olarak, ViewportSize ile kamera renderi için kullanılan asıl görüntü büyüklüğü arasında bir fark olmadığını not edin (kamera renderi, kamera alanının tam ekran alanını kullanır). Ayrıca,

Kamera Güncellemeleri

Sadece <a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-common-help/">Class.Camera\ şu anda <a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-common-help/

Yöntemler

GetPartsObscuringTarget

Instances

Bu yöntem, BaseParts ile görüntülerin arasındaki hattı gizleyen Camera.CFrame ve Vector3 pozisyonlarının arasındaki hattı içeren bir matrisi döndürür

castPoints özelliği bir Vector3 pozisyonlarının bir matrisi olarak verilir. Matrisinin içindeki pozisyonlar BaseParts ile aynı sırayla listelenmiştir ve ekstra bir raycast verilmez. Eğer isabet pozisyonu, malzeme ve


local camera = workspace.CurrentCamera
local castPoints = {
Vector3.new(0, 10, 0),
Vector3.new(0, 15, 0)
}
local ignoreList = {}
local partsObscuringTarget = camera:GetPartsObscuringTarget(castPoints, ignoreList)

Eğer Terrain bir kasti gizlerse, BaseParts kasti gizleyen arasındaki kasti gizleyecek olmaz.

Parametreler

castPoints: Array

Cast puanlarının Vector3 pozisyonlarını bir matrisi.

ignoreList: Instances

Class.Instance|Instances olarak adlandırılan, onların soyundan geliştirilmiş bir matris.


Dönüşler

Instances

Kameranın BaseParts ile Camera.CFrame arasındaki görüş hattlarını gizleyen bir matris.

Kod Örnekleri

X-Ray Function

local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local function XRay(castPoints, ignoreList)
ignoreList = ignoreList or {}
local parts = camera:GetPartsObscuringTarget(castPoints, ignoreList)
for _, part in parts do
part.LocalTransparencyModifier = 0.75
for _, child in pairs(part:GetChildren()) do
if child:IsA("Decal") or child:IsA("Texture") then
child.LocalTransparencyModifier = 0.75
end
end
end
end
XRay({ Vector3.new() })

GetRenderCFrame

Bu işlev, CFrame renderindeki Camera'ın aslını döndürür, VR'nin etkisi dahil olmak üzere, Camera.CFrame özelliğine en iyi uygulama olarak kullanılır

Örneğin, VR'yi kullandığınızda, Camera aslında şu CFrame'da görüntülenir:


local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)
headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale
renderCFrame = camera.CFrame * headCFrame

Kameranın renderi sadece CFrame özelliğinin sağladığı kafa hesabı için değiştirilecektir.


Dönüşler

Class.Camera ın üzerinde Camera renderleniyor.

GetRoll

Bu işlev, radyana olarak, Camera 'e uygulanan mevcut yatışı geri verir. Yatış, kamera'nın Z ekseninde döndürme olarak tanımlanır.

Bu işlev sadece Camera:SetRoll() işlevi kullanılarak uygulanan katrolu geri verir. Katrol manuel olarak kamera'nın Camera.CFrame'ine uygulanırsa, katrol için kullanılan Camera 'in gerçek katrolu alınmaz. Uygulanan katrol 2>Class.Camera2> 'ın içine, katrol manuel olar


local function getActualRoll()
local camera = workspace.CurrentCamera
local trueUp = Vector3.new(0, 1, 0)
local cameraUp = camera:GetRenderCFrame().upVector
return math.acos(trueUp:Dot(cameraUp))
end

Dönüşler

Camera:SetRoll() ile uygulanan mevcut yatış, radyanda.

Kod Örnekleri

Camera:GetRoll

local currentRoll = math.deg(workspace.CurrentCamera:GetRoll()) -- Gets the current roll of the camera in degrees.
if currentRoll ~= 20 then
workspace.CurrentCamera:SetRoll(math.rad(20)) -- If the camera isn't at 20 degrees roll, the roll is set to 20 degrees.
end

ScreenPointToRay

Paralel yaz

Bu işlev, ekranda 2D pozisyonundan bir Datatype.Ray oluşturur (definidoji), GUI'yi hesaplayan için dünyadaki 2D pozisyonundaki eşdeğerinden gelir. Ray 2D pozisyonundaki eşdeğerinden gelir. Vector3 ile ilgili.

Bu işlev, GUI'nin yerleştirilmesini kabul ettiğinden, GUI elemanlarına uygulanan ofset (örneğin, üst kutu çubuğundan) hesaba katılır. Bu, ekran pozisyonu belirtilen yerin üst kutu çubuğunun altındaki GUI ofseti için hesaba katılır. Diğer taraflı bir işlev, GUI ofseti için kullanılmayan

Oluşturulan Ray bir birim ışını olduğu için, sadece bir metre uzunluğundadır. Daha uzun bir ışın oluşturmak için takip edilenişlemleri yapabilirsiniz:


local camera = workspace.CurrentCamera
local length = 500
local unitRay = camera:ScreenPointToRay(100, 100)
local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)

Bu işlev sadece mevcut Workspace kamera için çalışır. Diğer kameralar, örneğinizin bir ViewportFrame için oluşturduğunuz gibi, bir İlk görüntü büyüklüğü'ne sahiptir ve sadece (1, 1)

Parametreler

Datatype.Ray ile oluşturulacak ekran noktasının pozisyonu, piksel olarak ekran noktasında bulunan pozisyonun hesabını içerir. Bu pozisyon GUI'yi hesaplar.

Y ekseninde, piksel olarak, ekran noktasının orijinal olacağı yerin pozisyonu. Bu pozisyon, GUI'yi yerleştirmeyi temsil eder.

depth: number

Class.Camera ile derinlik, Ray 'in orijinaline karşı kaydırma için.

Varsayılan değer: 0

Dönüşler

A birimi Ray, verilen eşdeğer Vector3 dünya pozisyonundan gelen Camera uzaktan çıktığından oluşan bir birim. Bu ışın şu 1> Class.Camera1> ile yönlendiği yönde şekillendirilmiştir.

SetRoll

void

Bu işlev artık uygulama olarak kabul edilmez.

Bu işlev, Camera 'in mevcut yatışını, radyana olarak, ayarlar. Yatış, Camera.CFrame 'den sonra uygulanır ve kamera etrafındaki dönmeyi temsil eder.

Örneğin, aşağıdaki kodlar Camera 'yı şu şekilde yanlış çevirir:


workspace.CurrentCamera:SetRoll(math.pi) -- math.pi radians = 180 degrees

SetRoll, Camera.CFrame özelliğini kullanarak uygulanan herhangi bir role hiçbir etkisi yoktur. SetRoll'ı kullanarak uygulanan rol, Camera.CFrame özelliğine yansıtılmaz, ancak CFrame'i 1> Class.Camera:GetRenderCFrame()1> ile döndürür.

Bu işlev sadece Camera.CameraType 'i Scriptable olarak ayarladığınızda kullanılabilir. Eğer varsayılan kameraların 2>skriptleri2> kullanılıyor olup olmadığına bağlı olarak çıktıda bir uyarı verilir.

Bu işlev kullanılarak herhangi bir katrol uygulandığında Camera.CameraType , 'Scriptable' 'dan değiştirildiğinde kaybolacaktır.

Bu işlevi kullanarak rol setini almak için şunu kullanın Camera:GetRoll() .

Bu işlev çok eskidiğinden, Camera özelliğini kullanarak yerleştirmeyi Camera.CFrame özelliğini kullanarak yerleştirmenizi öneririz. Örneğin:


local currentCFrame = workspace.CurrentCamera.CFrame
local rollCFrame = CFrame.Angles(0, 0, roll)
workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame

Parametreler

rollAngle: number

Class.Camera için uygulanacak yatış açısı, radyana olarak.


Dönüşler

void

ViewportPointToRay

Paralel yaz

Bu işlev, cihaz güvenli görüntü kutusu koordinatlarındaki 2D pozisyonundan bir birim oluşturur Ray, tanımlanmış derinlik (in studs) dışındaki dünya Vector3 .

Aşağıda gösterildiği gibi, (0, 0) Roblox üst kutusunun sol üst noktasına eşittir. Bu, giriş 2D pozisyonunun Enumerate.ScreenInsets|CoreUISafeInsets içindeki ortaya çıkmasını sağlar, ancak Enumerate.ScreenInsets

Diagram showing the origin of the device safe area viewport coordinate system.

Arayüz instanslarının farklı bir koordinat sistemi kullandığını lütfen not edin (GuiObject.AbsolutePosition kullanır CoreUISafeInsets görüntü koordinat sistemini, bu işlev DeviceSafeInsets

Ayrıca, bu işlev sadece Class.Workspace. CurrentCamera kamerası için çalışır. Diğer kameralar, ViewportFrame oluşturduğunuz kameralar gibi, bir ön görüntü büyükl

Bu özellik, ekranın merkezinde bir ışın oluşturmak için ViewportSize özelliği ile birleştirilebilir:


local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local viewportPoint = camera.ViewportSize / 2
local unitRay = camera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y, 0)

Oluşturulan Ray bir birim ışını olduğu için, sadece bir metre uzunluğundadır. Daha uzun bir ışın oluşturmak için takip edilenişlemleri yapabilirsiniz:


local Workspace = game:GetService("Workspace")
local camera = Workspace.CurrentCamera
local length = 500
local unitRay = camera:ScreenPointToRay(100, 100)
local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)

Parametreler

X eksenindeki konum, Ray'in oluşturulacağı alanın nokta sayısında, cihaz güvenli alan koordinatlarında.

Y eksenindeki pozisyon, Y eksenindeki görüntü alanının, Ray 'in cihaz güvenli alanındaki koordinatlarında oluşturulması için.

depth: number

Class.Camera ile derinlik, Ray 'in orijinaline karşı kaydırma için.

Varsayılan değer: 0

Dönüşler

A birimi Ray, verilen görüntü koordinatlarının eşdeğer Vector3 dünya pozisyonundan oluşan bir birim. Bu ışın Camera uzaktan çok yönlü olarak yönlendirilmiştir.

WorldToScreenPoint

Paralel yaz

Bu işlev, bir Vector3 ile ekran konumunu ve derinliğini ve bu noktanın ekran sınırı içinde olup olmadığını döndürür.

Bu işlev, üst kısayolun alanını gibi mevcut GUI'yi göz önünde bulundurur, ce qui signifie que la position 2D için döndürilen pozisyon aynı GUI pozisyonlarıyla eşdeğerdir ve GUI öğeleri yerleştirilebilir. GUI'yi yoksayan bir işlev için aynısını görüntüleyin Camera:WorldToViewportPoint() .


local camera = workspace.CurrentCamera
local worldPoint = Vector3.new(0, 10, 0)
local vector, onScreen = camera:WorldToScreenPoint(worldPoint)
local screenPoint = Vector2.new(vector.X, vector.Y)
local depth = vector.Z

Bu işlev herhangi bir raycasting yapmaz ve ekranda worldPoint olup olmadığını gösteren boBoolean'ın true olmasına rağmen, noktanın BaseParts veya 1> Class.Terrain1> tarafından kapatıldığı durumda da 4> true4> olacaktır.

Parametreler

worldPoint: Vector3

Datatype.Vector3 dünya pozisyonu.


Dönüşler

Sırayla içeren bir tupla:

  • Ekranın sol üst köşesinden gelen Vector3 ile ilgili X ve Y bileşenleri, worldPoint ile temsil edilir. Vector32> Z2> bileşenini derinliği, 5> worldPoint5> ile ekran (in studs) derinliği.

  • Ekranın sınırları içinde worldPoint olup olmadığını gösteren bir booleoid.

WorldToViewportPoint

Paralel yaz

Bu işlev, bir Vector3 ile ekran konumunu ve derinliğini ve bu noktanın ekran sınırı içinde olup olmadığını döndürür.

Bu işlev, üst kutunun işgali gibi mevcut GUI'yi göz önünde bulundurmaz, yani 2D konumunun geri verilen yerinin sol üst kutu köşesinden alınır. ScreenGui.IgnoreGuiInset kullanmıyorsanız, bu pozisyon yerleştirme için uygun değildir.

Diğer GUI'ler için aynı olmayan bir işlev için, Camera:WorldToScreenPoint() gösterin.


local camera = workspace.CurrentCamera
local worldPoint = Vector3.new(0, 10, 0)
local vector, onScreen = camera:WorldToViewportPoint(worldPoint)
local viewportPoint = Vector2.new(vector.X, vector.Y)
local depth = vector.Z

Bu işlev herhangi bir raycasting yapmaz ve ekranda worldPoint olup olmadığını gösteren boBoolean'ın true olmasına rağmen, noktanın BaseParts veya 1> Class.Terrain1> tarafından kapatıldığı durumda da 4> true4> olacaktır.

Parametreler

worldPoint: Vector3

Datatype.Vector3 dünya pozisyonu.


Dönüşler

Sırayla içeren bir tupla:

  • A Vector3 whose X ve Y компонентиeleri görüntü alanının sol üst köşesinden gelen 1> worldPoint1> の ofsetini temsil eder, 4> Datatype.Vector34> 7> Z

  • Ekranın sınırları içinde worldPoint olup olmadığını gösteren bir booleoid.

ZoomToExtents

void

Parametreler

boundingBoxCFrame: CFrame
boundingBoxSize: Vector3

Dönüşler

void

Etkinlikler

InterpolationFinished

Bu olay, Camera ile görüntü işlemlemeyi tamamladığında tetiklenir.

Bu etkinlik tween'in tekrar çağrılması nedeniyle Camera:Interpolate() çağrıldığından etkilenmez.

Bunun yerine TweenService kullanmak daha iyidir, çünkü daha güvenilir ve stil kolaylığı için daha fazla seçenek sunar.