Camera
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
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
Class.Camera ın konumunu ve yönünü belirleyen Camera kaydı.
Kameranın Enum.CameraType ını okuyacak olan kodları belirtir.
Kameranın diyagonal görüş alanının açısını ayarlar.
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.
Roblox'un grafik sistemleri tarafından önceliklendiği 3D alanını ayarlar.
Bir VR cihazı kullanarak bir oyuncunun kafa hareketini otomatik olarak izleyip izlemeyeceğini ayarlar.
VR'yi kullanırken kullanıcının dünya perspektifinin ölçeğini ayarlar.
Kameranın görüş alanının boyunca kamera alanının açısını ayarlar.
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.
Roblox'un bir klienindeki cihaz güvenli alanının boyutları.
Yöntemler
Kamera'nın BaseParts ve kast noktaları arasındaki hizaları gizleyen bir Camera.CFrame diziyi iade eder.
Class.Camera render edilen şu andaki Camera döndürür, herhangi bir uygulanan yatış ve VR cihazlarının etkisi için hesaplanır.
Class.Camera kullanarak Camera:SetRoll() ile Class.Camera üzerine uygulanan katılışı içerir.
Ekranda bir pozisyondan Ray bir birim oluşturur (Pixel'de), bir Class.Camera kamerasının yönünde yerleştirilmiş bir derinlikten. GUI'nin yerleştirilmesi için hesaplar.
Kameranın Z ekseninde uygulanan mevcut dönmeyi ayarlar.
Görüntü alanındaki bir pozisyondan Ray oluşturur (pikselde), bir Camera , kamera yönünde şekillendirilmiştir. CoreUISafeInsets ınseti dikkate almaz.
Ekran konumunu ve derinliğini bir Datatype.Vector3``worldPoint ve bu noktanın ekran sınırı içinde olup olmadığını hesaplar. GUI'nin yerleştirme sayısını hesaplar.
Ekran konumunu ve derinliğini bir Datatype.Vector3``worldPoint ve bu noktanın ekran sınırı içinde olup olmadığını hesap etmez. GUI'yu saymaz.
Etkinlikler
Class.Camera ile ilgili işlemler tamamlandıktan sonra ateşlenir.
Özellikler
CFrame
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.CurrentCameracamera.CameraType = Enum.CameraType.Scriptablelocal 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.CurrentCameracamera.CameraType = Enum.CameraType.Scriptablelocal player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()endlocal pos = camera.CFrame * Vector3.new(0, 20, 0)local lookAtPos = character.PrimaryPart.Positionlocal targetCFrame = CFrame.lookAt(pos, lookAtPos)local tween = TweenService:Create(camera, TweenInfo.new(2), {CFrame = targetCFrame})tween:Play()
CameraSubject
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
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
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
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
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
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
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.CurrentCameralocal headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale-- Bu, Camera:GetRenderCFrame() ile eşdeğer olacaktırlocal 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
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
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
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
VRTiltAndRollEnabled
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
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
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
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.CurrentCameralocal 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
Class.Instance|Instances olarak adlandırılan, onların soyundan geliştirilmiş bir matris.
Dönüşler
Kameranın BaseParts ile Camera.CFrame arasındaki görüş hattlarını gizleyen bir matris.
Kod Örnekleri
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.CurrentCameralocal headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScalerenderCFrame = camera.CFrame * headCFrame
Kameranın renderi sadece CFrame özelliğinin sağladığı kafa hesabı için değiştirilecektir.
Dönüşler
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
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
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.CurrentCameralocal length = 500local 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.
Dönüşler
SetRoll
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.CFramelocal rollCFrame = CFrame.Angles(0, 0, roll)workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame
Parametreler
Class.Camera için uygulanacak yatış açısı, radyana olarak.
Dönüşler
ViewportPointToRay
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
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.CurrentCameralocal viewportPoint = camera.ViewportSize / 2local 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.CurrentCameralocal length = 500local 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.
Dönüşler
WorldToScreenPoint
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.CurrentCameralocal 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
Datatype.Vector3 dünya pozisyonu.
Dönüşler
WorldToViewportPoint
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.CurrentCameralocal 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
Datatype.Vector3 dünya pozisyonu.
Dönüşler
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.