Camera

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Direplikasi

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

Metode

Properti

CFrame

Baca Paralel

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

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.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

Baca Paralel

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

Baca Paralel

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

Tidak Direplikasi
Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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.CurrentCamera
local 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

HeadScale

Baca Paralel

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

Tidak Direplikasi
Baca Paralel

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

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

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

VRTiltAndRollEnabled

Baca Paralel

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

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

Mobile device screen with cutout showing device safe area.

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

Instances

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.CurrentCamera
local 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

castPoints: Array

Sebuah matriks Vector3 posisi poin cast.

ignoreList: Instances

Sebuah matriks Instances yang harus diabaikan, bersama dengan cucu mereka.


Memberikan nilai

Instances

Sebuah matriksi dari BaseParts yang menyembunyikan garis pandangan antara kamera's Camera.CFrame dan castPoints .

Contoh Kode

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

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.CurrentCamera
local headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)
headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale
renderCFrame = camera.CFrame * headCFrame

Render kamera CFrame hanya akan diubah untuk menghitung kepala saat propinsi Camera.HeadLocked benar.


Memberikan nilai

Datatype.CFrameCamera di render di.

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

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

Tulis Paralel

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.CurrentCamera
local length = 500
local 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.

depth: number

Kedalaman dari Camera, dalam studs, dari mana untuk mengurangi asal dari Ray .

Nilai Default: 0

Memberikan nilai

Sebuah unit Ray, berasal dari posisi dunia Datatype.Vector3 yang diberikan di koordinat lokasi layar yang diberikan di kedalaman Class.Camera . Ray ini berorientasi dalam arah Class.Camera .

SetRoll

void

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.CFrame
local rollCFrame = CFrame.Angles(0, 0, roll)
workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame

Parameter

rollAngle: number

Sudut gulir, dalam radian, untuk diterapkan ke Camera .


Memberikan nilai

void

ViewportPointToRay

Tulis Paralel

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

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

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.CurrentCamera
local viewportPoint = camera.ViewportSize / 2
local 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.CurrentCamera
local length = 500
local 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.

depth: number

Kedalaman dari Camera, dalam studs, dari mana untuk mengurangi asal dari Ray .

Nilai Default: 0

Memberikan nilai

Sebuah unit Ray, berasal dari posisi dunia Datatype.Vector3 yang setara dari koordinat tampilan yang diberikan di koordinat kedalaman dari Vector3. Ray ini berorientasi dalam arah Class.Camera .

WorldToScreenPoint

Tulis Paralel

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.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

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

worldPoint: Vector3

Posisi dunia Vector3 .


Memberikan nilai

Sebuah tuple yang berisi, dalam urutan:

  • A Vector3 whose X dan Y komponen mewakiliOffset dari worldPoint dari sudut kiri atas layar, dalam pixel. Komponen Vector31> Z1> mewakili kedalaman dari 4> worldPoint4> dari layar (dalam studs).

  • Boolean yang menunjukkan apakah worldPoint berada dalam batas layar.

WorldToViewportPoint

Tulis Paralel

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.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

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

worldPoint: Vector3

Posisi dunia Vector3 .


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.

ZoomToExtents

void

Parameter

boundingBoxCFrame: CFrame
boundingBoxSize: Vector3

Memberikan nilai

void

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.