Camera
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Objek Kamera mendefinisikan pandangan dunia 3D. Dalam pengalaman berjalan, setiap klien memiliki objek Kamera sendiri yang berada di lokasi Workspace , yang dapat diakses melalui properti 1> Class.Workspace.CurrentCamera1>.
Kamera paling penting memiliki:
Camera.CFrame yang mewakili posisi dan orientasi kamera.
Camera.CameraType yang dibaca oleh kode kamera pengalaman dan menentukan cara kamera harus memperbarui setiap frame.
Camera.CameraSubject yang dibaca oleh skrip kamera pengalaman dan menentukan objek mana yang harus diikuti kamera.
Camera.FieldOfView yang mewakili skala yang terlihat dari dunia yang dapat diamati.
Camera.Focus yang mewakili titik di mana kamera mencari. Penting bahwa property ini diatur, karena beberapa visual akan lebih rinci dan akan diperbarui lebih sering tergantung pada seberapa dekat mereka dengan titik fokus.
Lihat Mengubah Kustom Kamera untuk lebih banyak informasi tentang cara menyesuaikan dan menyesuaikan perilaku kamera.
Rangkuman
Properti
Datatype.CFrame dari Camera , mendefinisikan posisinya dan orientasi di dunia 3D.
Mendefinisikan Enum.CameraType yang akan dibaca oleh skrip kamera.
Mengatur sudut pandang vertikal bidang pandang kamera.
Mengatur sudut pandang vertikal kamera.
Mengukur nilai FOV Camera yang konstan di bawah perubahan ukuran jendela pandang.
Mengatur area di ruang 3D yang prioritas oleh sistem grafis Roblox.
Mengubah apakah kamera akan secara otomatis melacak gerakan kepala pemain menggunakan perangkat VR.
Mengatur skala perspektif pengguna tentang dunia saat menggunakan VR.
Mengatur sudut bidang kamera sepanjang sumbu pandangan terpanjang.
Menggambarkan kompensasi negatif Z dalam studs, dari pesawat yang dekat dengan pesawat jatuh.
Mengubah apakah akan menerapkan titik tumpah dan gulir dari property Camera.CFrame saat pemain menggunakan perangkat VR.
Dimensi dari area aman perangkat pada klien Roblox.
Metode
Mengembalikan matriksi BaseParts yang menyembunyikan garis pandangan antara Camera.CFrame dan titik pemerahan.
Mengembalikan CFrame sebenarnya di mana Camera dikembalikan, menghitung biaya per putaran yang diterapkan dan dampak dari perangkat VR.
Mengembalikan dalam radian lilin saat ini, atau rotasi di sekitar sumbu Z kamera, diterapkan pada Camera menggunakan Camera:SetRoll() .
Menciptakan unit Ray dari posisi di layar (dalam pixel), dengan kedalaman tetap dari set Camera yang bergerak dalam arah kamera. Menghitung untuk inset GUI.
Tetapkan rotasi saat ini yang diterapkan di sekitar sumbu Z kamera.
Menciptakan unit Ray dari posisi di jendela (dalam piksel), dengan kedalaman tertentu dari Class.Camera , bergerak dalam arah kamera. Tidak mengambil Camera dalat.
Mengembalikan lokasi dan kedalaman layar Datatype.Vector3``worldPoint dan apakah titik ini berada di dalam batas layar. Menghitung untuk GUI dalamset.
Mengembalikan lokasi dan kedalaman layar Datatype.Vector3``worldPoint dan apakah titik ini berada di dalam batas layar. Tidak menghitung GUI dalam set.
Acara
Diaktifkan ketika Camera telah selesai menginterpolasi menggunakan Camera:Interpolate() .
Properti
CFrame
Properti ini adalah CFrame dari Camera , mendefinisikan posisinya dan orientasinya di dunia 3D. Catat bahwa beberapa transformasi, seperti rotasi kepala saat menggunakan perangkat VR, tidak dapat diterjemahkan ke dalam propert
Anda dapat menggerakkan kamera dengan menetapkan property ini. Namun, script kamera default juga menetapkannya, jadi Anda harus:
Tetapkan kamera Camera.CameraType ke Enum.CameraType.Scriptable sehingga skrip kamera default tidak akan memperbarui CFrame kamera. Metode ini paling sederhana dan direkomendasikan dalam kebanyakan kasus.
Ganti sepenuhnya naskah kamera default dengan alternatif. Pendekatan ini hanya direkomendasikan jika Anda tidak memerlukan fungsionalitas kamera default.
Cara yang paling intuitif untuk menempatkan dan menyederkan Camera adalah dengan menggunakan konstruktor CFrame.lookAt(). Dalam contoh berikut, Camera ditempatkan di 2>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)
Meskipun kamera dapat ditempatkan dengan cara yang ditunjukkan di atas, Anda mungkin ingin menganimasikannya untuk bergerak dengan lancar dari satu CFrame ke yang lain. Untuk ini, Anda dapat menggunakan salah satu dari:
Tetapkan posisi/orientasi kamera setiap frame dengan RunService:BindToRenderStep() dan metode CFrame:Lerp().
Buat dan mainkan Tween yang menganimasikan posisi/orientasi kamera:
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
CameraSubject menerima berbagai jenis Instances . Script kamera default menanggapi secara berbeda terhadap pengaturan yang tersedia:
Secara default, skrip kamera mengikuti karakter lokal, Humanoid, dengan mempertimbangkan keadaan humanoid saat ini dan Humanoid.CameraOffset.
Ketika diatur ke a BasePart , script kamera mengikuti posisinya, denganOffset vertikal dalam kasus VehicleSeats .
CameraSubject tidak dapat diatur menjadi nil . Mencoba melakukannya akan mengembalikannya ke nilai sebelumnya.
Untuk mengembalikan CameraSubject ke nilai defaultnya, tetapkan ke lokasi karakter lokalnya Humanoid :
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
Skrip kamera Roblox default memiliki beberapa perilaku bawaan. Mengatur property ini menghubungkan antara beberapa perilaku Enum.CameraType yang valid. Catat bahwa beberapa jenis kamera memerlukan Camera.CameraSubject yang valid untuk berfungsi dengan benar.
Skrip kamera default tidak akan bergerak atau diperbarui kamera jika CameraType di set ke Enum.CameraType.Scriptable. Untuk informasi lebih lanjut tentang posisi dan orientasi kamera secara manual, lihat Camera.CFrame .
Untuk semua CameraType pengaturan kecuali Enum.CameraType.Scriptable, properti 1> Class.Camera.CameraSubject|CameraSubject1> mewakili objek cuaca yang posisinya kamera 4> Class.Camera.Focus4> tetap.
DiagonalFieldOfView
Mengatur berapa banyak derajat dalam arah vertikal (dari satu sudut pandangan ke sudut pandang yang berlawanan) kamera dapat melihat. Lihat FieldOfView untuk penjelasan yang lebih umum tentang bidang pandang.
Catat bahwa DiagonalFieldOfView mewakili bidang pandangan yang terlihat oleh render Camera ke area penuh yang mungkin tertutup oleh lubang atau potongan pada beberapa perangkat. Lihat Class. Camera.ViewportSize|ViewportSize untuk lebih banyak informasi.
FieldOfView
Properti FieldOfView menetapkan berapa banyak derajat dalam arah vertikal kamera dapat melihat. Propperti ini dibungkukkan antara 1 dan 120 derajat dan default di 70. Sangat rendah atau sangat tinggi propperti ini dapat menyulitkan pemain.
Catat bahwa skalibrasi seragam diwajibkan, yang berarti lapangan pandang vertikal dan horizontal selalu terkait dengan aspek rasio layar.
Penggunaan yang disarankan untuk FieldOfView (FOV) termasuk:
- Mengurangi FOV untuk memberikan kesan pembesaran, misalnya saat menggunakan binocular.
- Meningkatkan FOV saat pemain "berlari" untuk memberikan kesan kurang kontrol.
Catat bahwa FieldOfView mewakili bidang pandangan yang terlihat oleh render Camera ke area penuh yang mungkin tertutup oleh notch atau potongan layar pada beberapa perangkat. Lihat Class.Camera. ViewportSize|ViewportSize untuk lebih banyak informasi.
FieldOfViewMode
Fitur penglihatan kamera (FOV) harus diperbarui untuk mencerminkan perubahan ViewportSize .Nilai FieldOfViewMode menentukan nilai FOV yang akan tetap konstan.
Misalnya, ketika property ini diatur ke Enum.FieldOfViewMode.Vertical, FOV horizontal diperbarui ketika viewport ditingkatkan, tetapi FOV vertikal tetap konstan. Jika property ini diatur ke Enum.FieldOfViewMode.Diagonal, kedua FOV horizontal dan vertikal dapat diubah untuk menjaga FOV vertikal konstan. Jika property ini diatur ke Enum.FieldOfViewMode.Sub</
Focus
Beberapa operasi grafis yang dilakukan mesin, seperti menyetel ulang penerangan, dapat memakan waktu atau upaya komputasi untuk menyelesaikan. Propietas Fokus kamera memberi tahu mesin mana di ruang 3D untuk mengh prioritaskan saat mengeksekkan operasi tersebut. Misalnya, lampu dinamis dari objek seperti PointLights m
Skrip kamera Roblox default secara otomatis menetapkan Fokus
Fokus tidak berpengaruh pada posisi atau orientasi kamera; lihat Camera.CFrame untuk ini.
HeadLocked
Mengubah apakah kamera akan secara otomatis melacak gerakan kepala pemain menggunakan perangkat VR. Saat true (默认), mesin menggabungkan Camera.CFrame dengan Enum.UserCFrame dari kepala pemain untuk menyajikan pandangan
local UserInputService = game:GetService("UserInputService")local camera = workspace.CurrentCameralocal headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale-- Ini akan sama dengan Camera:GetRenderCFrame()local renderCFrame = camera.CFrame * headCFrame
Direkomendasikan untuk tidak menonaktifkan property ini karena alasan berikut:
- Pemain mungkin mengalami penyakit gerakan jika solusi pelacakan kepala yang setara tidak ditambahkan.
- Mesin Roblox melakukan optimisasi latensi saat Kunci Pemutar terkunci benar.
Lihat Juga
- VRService:GetUserCFrame() yang dapat digunakan untuk mendapatkan CFrame dari kepala.
- VRService:RecenterUserHeadCFrame() yang digunakan untuk menyentuh kepala ke posisi dan orientasi perangkat VR saat ini.
- Fungsi Camera:GetRenderCFrame() yang mengembalikan Camera.CFrame bersama dengan CFrame dari kepala pengguna.
HeadScale
HeadScale adalah skala perspektif pengguna tentang dunia saat menggunakan VR.
Ukuran 1 stud di VR adalah 0.3 meters / HeadScale , yang berarti bahwa nilai HeadScale yang lebih besar setara dengan dunia yang lebih kecil dari perspektif pengguna saat menggunakan perangkat VR. Misalnya, bagian yang tinggi 1 stud tampaknya menjadi 0.6 meter tinggi untuk pem
Properti ini diotayakan secara otomatis oleh VRService.AutomaticScaling untuk menyesuaikan perspektif pemain dengan ukuran avatar mereka. Jika Anda berniat untuk mengontrol HeadScale sendiri atau menggunakan karakter khusus, toggle VRService.AutomaticScaling menjadi 2>Class.VRScaling.Off2>
Properti ini seharusnya tidak bingung dengan Humanoid.HeadScale yang merupakan anak NumberValue dari Class.Humanoid untuk mengontrol skalanya.
MaxAxisFieldOfView
Properti MaxAxisFieldOfView menetapkan berapa banyak derajat di sumbu pandangan panjang yang dapat kamera lihat.
Ketika sumbu terpanjang adalah sumbu vertikal, propperti ini akan bersikap mirip dengan properti FieldOfView. Ini umumnya berlaku ketika perangkat berada dalam orientasi potret. Di orientasi lanskap, sumbu terpanjang akan menjadi sumbu vertikal; dalam kasus ini, propperti menggambarkan sumbu pandang vertikal Class.Camera .
NearPlaneZ
Properti NearPlaneZ menjelaskan seberapa jauh ke dekatnya pesawat kamera terletak, dalam stud. Pesawat dekat adalah pesawat geometris yang berada di depan Class.Camera.CFrame . Apa pun di antara pesawat ini dan kamera tidak akan rendah, menghasilkan pandangan potong ket
VRTiltAndRollEnabled
Elemen ini mengubah apakah akan menerapkan tumpukan dan gulir dari property Camera.CFrame saat pemain menggunakan perangkat VR.
Untuk mencegah penyakit gerakan, horizon harus tetap level. Tilt dan roll pemain's view saat menggunakan perangkat VR dapat menyebabkan koneksi terputus antara ruang fisik pemain dan ruang virtual yang mereka tonton. Mengubah arah tampak ke bawah dapat menyebabkan pemain kehilangan keseimbangan atau mengalami muntah.
Untuk alasan ini, umumnya disarankan untuk meninggalkan property ini dinonaktifkan, kecuali Anda telah secara ekstensif menguji pengalaman Anda untuk efek ini. Bahkan dengan menyesuaikan dan menggulir diaktifkan, Anda mungkin ingin memastikan bahwa pemain selalu memiliki referensiFrame yang stabil, seperti interior kendaraan atau lantai yang dapat membantu pemain berada di ruang fisik mereka.
ViewportSize
ViewportSize mengembalikan dimensi area aman perangkat di layar saat ini. Area ini adalah area persegi yang termasuk area ujung atas Roblox tetapi tidak termasuk slot perangkat atau potongan layar. Unit dari ViewportSize adalah unit pengesetan UI Roblox yang dapat bervariasi d
Seperti yang dicatat di atas, ViewportSize tidak sama dengan ukuran area penuh layar pada tampilan dengan potong
Selain itu, perlu dicatat bahwa ViewportSize bukanlah ukuran layar penuh yang digunakan kamera untuk menyajikan (kamera menyajikan di area penuh layar). Juga, ke-Camera.FieldOfView dan ke- Class.Camera.View
Pemutakhiran Kamera
Hanya Camera saat ini yang diacak oleh Class.Workspace. CurrentCamera saat ini memiliki ViewportSize 更新每 frame selama 2>Class.RunService.PreRender|
Metode
GetPartsObscuringTarget
Metode ini mengembalikan matriksi BaseParts yang menyembunyikan garis pandangan antara Camera.CFrame dan Vector3 posisi dalam 1> castPoints1> array. Setiap
Para parameter castPoints diberikan sebagai matriks dari Vector3 posisi. Catat bahwa matriks dari BaseParts yang dikembalikan adalah dalam urutan acak, dan tidak ada data raycast tambahan yang diberikan. Jika Anda memerlukan data seperti posisi pukul, b
local camera = workspace.CurrentCameralocal castPoints = {Vector3.new(0, 10, 0),Vector3.new(0, 15, 0)}local ignoreList = {}local partsObscuringTarget = camera:GetPartsObscuringTarget(castPoints, ignoreList)
Jika Terrain menyembunyikan titik cast, BaseParts menyembunyikan titik cast di antara Terrain dan titik cast tidak akan dikembalikan.
Parameter
Sebuah matriks Instances yang harus diabaikan, bersama dengan cucu mereka.
Memberikan nilai
Sebuah matriksi dari BaseParts yang menyembunyikan garis pandangan antara kamera's Camera.CFrame dan castPoints .
Contoh Kode
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
Fungsi ini mengembalikan CFrame asli dari Camera saat di render, termasuk pengaruh VR (VR head transformations tidak diterapkan pada property Camera.CFrame, jadi adalah praktik terbaik untuk menggunakan <
Misalnya, saat menggunakan VR, Camera sebenarnya di render pada CFrame berikut:
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
Render kamera CFrame hanya akan diubah untuk menghitung kepala saat propinsi Camera.HeadLocked benar.
Memberikan nilai
GetRoll
Fungsi ini mengembalikan, dalam radian, gulir saat ini yang diterapkan kepada Camera menggunakan Camera:SetRoll(). Gulir di definisikan sebagai rotasi di sekitar Z-axis kamera.
Fungsi ini hanya mengembalikan roll yang diterapkan menggunakan fungsi Camera:SetRoll(). Roll secara manual diterapkan ke kamera's Camera.CFrame tidak dihitung. Untuk mendapatkan roll aktual dari Camera, termasuk roll yang diterapkan secara manual, Anda dapat menggunakan snippet berikut:
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
Memberikan nilai
Roll saat ini diterapkan oleh Camera:SetRoll() , dalam radian.
Contoh Kode
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
Fungsi ini menciptakan unit Ray dari posisi 2D di layar (ditentukan dalam pixel), menghitung GUI dalamset. The Ray berasal dari Vector3 ivaluasi dari posisi 2D di dunia dengan kedalaman 1> Class.Camera1> .
Karena fungsi ini mengakui insentasi GUI,Offset yang diterapkan pada elemen GUI (seperti dari bar atas) dihitung. Ini berarti posisi layar yang ditentukan akan dimulai di sudut atas kiri bawah dari bar atas.Untuk fungsi yang sama yang tidak mengakui insentasi GUI, gunakan Camera:ViewportPointToRay() .
Karena Ray yang dibuat adalah unit ray, panjangnya hanya satu stud. Untuk membuat panjang ray yang lebih panjang, Anda dapat melakukan mengikuti:
local camera = workspace.CurrentCameralocal length = 500local unitRay = camera:ScreenPointToRay(100, 100)local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)
Fungsi ini hanya berfungsi untuk kamera Workspace saat ini. Kamera lain, seperti kamera yang kamu buat untuk ViewportFrame, memiliki ukuran viewport awal (1, 1) dan hanya diperbarui setelah kamu menetapkannya ke Workspace.CurrentCamera . Ket
Parameter
Posisi di sumbu X, dalam pixel, dari titik layar di mana untuk mendapatkan Ray . Posisi ini mencakup posisi GUI.
Posisi di sumbu Y, dalam pixel, dari titik layar di mana untuk mendapatkan Ray . Posisi ini mencakup posisi GUI.
Memberikan nilai
SetRoll
Fungsi ini sudah ketinggalan dan tidak lagi dianggap praktik terbaik.
Fungsi ini menetapkan rol saat ini, dalam radian, dari Camera . Roll diterapkan setelah Camera.CFrame dan mewakili rotasi di sekitar sumbu Z kamera.
Misalnya, berikut akan mengubah Camera :
workspace.CurrentCamera:SetRoll(math.pi) -- math.pi radians = 180 degrees
SetRoll tidak memiliki efek pada set mana pun yang diterapkan menggunakan property Camera.CFrame. Roll diterapkan menggunakan property Camera.CFrame tidak dikembalikan dalam properti CFrame tetapi dikembalikan dalam properti 1>Class.Camera:GetRenderCFrame1> yang dikembalikan oleh 4>Class.Camera:
Fungsi ini hanya dapat digunakan ketika Camera.CameraType di set ke 'Scriptable', terlepas dari apakah skrip kamera default digunakan. Jika digunakan dengan Camera.CameraType lainnya, sebuah peringatan diberikan dalam keluaran.
Setiap gulir diterapkan menggunakan fungsi ini akan hilang saat Camera.CameraType diubah dari Scriptable.
Untuk mendapatkan set gulir menggunakan fungsi ini gunakan Camera:GetRoll() .
Karena fungsi ini kedaluwarsa, Anda disarankan untuk menerapkan roll ke Camera menggunakan property Camera.CFrame. Misalnya:
local currentCFrame = workspace.CurrentCamera.CFramelocal rollCFrame = CFrame.Angles(0, 0, roll)workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame
Parameter
Memberikan nilai
ViewportPointToRay
Fungsi ini menciptakan unit Ray dari posisi 2D di jendela tampilan perangkat, yang ditentukan dalam pixel. Ray ini berasal dari Vector3 ivaluasi posisi 2D di dunia pada kedalaman yang diberikan (dalam studs) jauh dari Camera .
Seperti yang ditunjukkan di bawah, (0, 0) mencerminkan posisi atas kiri dari bilah atas Roblox. Ini berarti bahwa posisi 2D masuk tidak menghitung untuk set Enumerate.ScreenInsets|CoreUISafeInsets dalam set, tetapi itu mencerminkan set apa pun Enumerate.Screen
Catat bahwa UI instans menggunakan sistem koordinat yang berbeda ( GuiObject.AbsolutePosition menggunakan sistem koordinat CoreUISafeInsets saat fungsi ini menggunakan sistem koordinat DeviceSafeInsets . Jika Anda ingin
Catat juga bahwa fungsi ini hanya berfungsi untuk kamera Class.Workspace. CurrentCamera. Kamera lain, seperti kamera yang Anda buat untuk ViewportFrame, memiliki ukuran viewport awal (1, 1)
Fungsi ini dapat digunakan bersama dengan properti ViewportSize untuk menciptakan sinar dari tengah layar, misalnya:
local Workspace = game:GetService("Workspace")local camera = Workspace.CurrentCameralocal viewportPoint = camera.ViewportSize / 2local unitRay = camera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y, 0)
Karena Ray yang dibuat adalah unit ray, panjangnya hanya satu stud. Untuk membuat panjang ray yang lebih panjang, Anda dapat melakukan mengikuti:
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)
Parameter
Posisi di sumbu X , dalam pixel, dari titik tampilan di mana akan muncul Ray, dalam koordinasi area aman perangkat.
Posisi di sumbu Y , dalam pixel, dari titik tampilan di mana akan muncul Ray, dalam koordinasi area aman perangkat.
Memberikan nilai
WorldToScreenPoint
Fungsi ini mengembalikan lokasi dan kedalaman layar Datatype.Vector3``worldPoint dan apakah titik ini berada di dalam batas layar.
Fungsi ini mengambil kedalaman GUI saat ini, seperti ruang yang ditempati oleh bilah atas, yang berarti bahwa posisi 2D yang dikembalikan berada dalam kondisi yang sama dengan posisi GUI dan dapat digunakan untuk menempatkan elemen GUI. Untuk fungsi identik lainnya yang mengabaikan kedalaman GUI, lihat 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
Catat bahwa fungsi ini tidak melakukan raycasting dan boolean yang menunjukkan apakah worldPoint berada dalam batas layar akan menjadi true terlepas dari apakah titik itu diblokir oleh BaseParts atau 1> Class.Terrain1>.
Parameter
Memberikan nilai
Sebuah tuple yang berisi, dalam urutan:
Boolean yang menunjukkan apakah worldPoint berada dalam batas layar.
WorldToViewportPoint
Fungsi ini mengembalikan lokasi dan kedalaman layar Datatype.Vector3``worldPoint dan apakah titik ini berada di dalam batas layar.
Fungsi ini tidak mengambil kedalaman GUI saat ini, seperti ruang yang ditempati oleh bilah atas, yang berarti bahwa posisi 2D yang dikembalikan diambil dari sudut atas kiri viewport. Jika Anda menggunakan ScreenGui.IgnoreGuiInset, posisi ini tidak sesuai untuk menempatkan elemen GUI.
Untuk fungsi identik lainnya yang menghasilkan GUI, lihat Camera:WorldToScreenPoint() .
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
Catat bahwa fungsi ini tidak melakukan raycasting dan boolean yang menunjukkan apakah worldPoint berada dalam batas layar akan menjadi true terlepas dari apakah titik itu diblokir oleh BaseParts atau 1> Class.Terrain1>.
Parameter
Memberikan nilai
Sebuah tuple yang berisi, dalam urutan:
A Vector3 whose X dan Y components represent theOffset of the 1> worldPoint1> from the top left corner of the viewport, in pixels. The 4> Datatype.Vector34> 7> Z7> component represents the depth of the 0> world
Boolean yang menunjukkan apakah worldPoint berada dalam batas layar.
Acara
InterpolationFinished
Acara ini diaktifkan ketika Camera telah selesai menginterpolasi menggunakan fungsi Camera:Interpolate().
Acara ini tidak akan mengeksekusi jika tween dihentikan karena Camera:Interpolate() dianggil lagi.
Anda disarankan untuk menggunakan TweenService untuk menyiarkan animasi Camera sebagai gantinya, karena lebih dapat diandalkan dan menyediakan lebih banyak opsi untuk memudahkan gaya.