Camera
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Các đối tượng Camera định nghĩa một tầm nhìn của thế giới 3D. Trong một trải nghiệm chạy, mỗi khách hàng có một đối tượng Camera riêng của riêng họ, có ở trong địa chỉ Workspace của họ, có thể truy cập thô
Các thuộc tính máy ảnh quan trọng nhất là:
Camera.CFrame đại diện cho vị trí và hướng của máy ảnh.
Camera.CameraType được đọc bởi các kịch bản của máy ảnh trải nghiệm và xác định cách máy ảnh nên cập nhật mỗi khung hình.
Camera.CameraSubject which is read by the experience's camera scripts and determines what object the camera should theo dõi.
Camera.FieldOfView đại diện cho phạm vi có thể nhìn thấy của thế giới quan sát.
Camera.Focus đại diện cho điểm mà máy ảnh đang nhìn vào. Điều này quan trọng khi thuộc tính này được cài đặt, vì một số hình ảnh sẽ được chi tiết hơn và sẽ cập nhật thường xuyên hơn tùy thuộc vào gần mục tiêu nào.
Xem Tùy chỉnh Camera để biết thêm thông tin về cách điều chỉnh và tùy chỉnh hành vi của máy ảnh.
Tóm Tắt
Thuộc Tính
The CFrame of the Camera , defining its position and orientation in the 3D world.
Định nghĩa Enum.CameraType để đọc bởi các脚本 máy ảnh.
Đặt góc của góc nhìn ngang của camera.
Đặt góc của trục ngang của camera.
Xác định giá trị FOV của Camera đó mà luôn luôn được đổi khi kích thước viewport thay đổi.
Đặt khu vực trong không gian 3D được ưu tiên bởi các hệ thống thị giác của Roblox.
Bật/tắt việc theo dõi chuyển động đầu của một người chơi bằng thiết bị VR.
Điều chỉnh kích thước của trụ cột người dùng khi sử dụng VR.
Điều chỉnh góc của góc nhìn của máy ảnh theo trục viewport dài nhất.
Mô tả sự thiếu Z độ trùng, in studs, của máy ảnh gần với máy bay cắt giảm.
Bật/tắt việc áp dụng dốc và cuộn từ thuộc tính Camera.CFrame khi người chơi đang sử dụng thiết bị VR.
Các kích thước của khu vực an toàn của thiết bị trên một máy chủ Roblox.
Phương Pháp
Đảm bảo một dàn bộ BaseParts đang che giấu các dòng nhìn giữa camera's Camera.CFrame và điểm thả.
Điều chỉnh trả lại thực tế CFrame nơi Camera đang được render, tính toán tất cả các khoản đóng góp và tác động của các thiết bị VR.
Đổi dữ liệu trong góc về cuộn dữ liệu hiện tại hoặc quay xung quanh trục Z của máy ảnh, được áp dụng cho Camera bằng cách sử dụng Camera:SetRoll() .
Tạo một unit Ray từ một vị trí trên màn hình (in pixels), tại một độ sâu nhất định từ Class.Camera hướng về phía camera. Tính GUI trong khi đó.
Điều chỉnh hướng quay hiện tại được ứng dụng xung quanh trục Z của máy ảnh.
Tạo một unit Ray từ một vị trí trên viewport (in pixels), tại một độ sâu nhất định từ Class.Camera , hướng theo hướng của camera. Không tính 枚 Class.Camera , bộ định dạng trong camera.
Lưu vị trí và độ sâu của màn hình và Datatype.Vector3``worldPoint và có phải điểm này ở trong giới hạn của màn hình không. Tính phí GUI.
Trả về vị trí màn hình và độ sâu của một Datatype.Vector3``worldPoint và liệu điểm này có ở trong giới hạn của màn hình không. Không tính GUI trong thiết bị.
Sự Kiện
Đã kết thúc khi Camera đã hoàn thành việc dịch chuyển bằng cách sử dụng Camera:Interpolate() .
Thuộc Tính
CFrame
Đây là CFrame của Class.Camera , xác định vị trí và hướng trong thế giới 3D. Lưu ý rằng một số biến hình, chẳng hạn như sự quay của đầu khi sử dụ
Bạn có thể di chuyển máy ảnh bằng cách cài đặt thuộc tính này. Tuy nhiên, các脚本 máy ảnh mặc định cũng cài đặt nó, vì vậy bạn nên:
Set the camera Camera.CameraType to Enum.CameraType.Scriptable so that the default camera scripts will not update the camera's CFrame . This method is simplest and recommended in most cases.
Thay hoàn toàn các tập tin mặc định của máy ảnh với các tập tin thay thế. Phương pháp này chỉ được khuyến nghị nếu bạn không cần các chức năng của máy ảnh mặc định.
Cách dễ dàng nhất để đặt vị trí và hướng Camera là bằng cách sử dụng CFrame.lookAt() Builder. Trong ví dụ sau, Camera được đặt tạ
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)
Mặc dù máy ảnh có thể được đặt theo cách được chỉ đ示 bên trên, bạn có thể muốn hoạt hóa nó để di chuyển mượt từ một CFrame đến một khác. Để làm điều này, bạn có thể:
Đặt vị trí/hướng của máy ảnh mỗi khung với RunService:BindToRenderStep() và phương pháp CFrame:Lerp().
Tạo và chơi một Tween để hoạt hóa vị trí/hướng tâm của máy ảnh:
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 chấp nhận một loạt các Instances . Các kịch bản khóa câm camera mặc định phản hồi khác nhau đối với các cài đặt có sẵn:
Mặc định, các tập lệnh máy ảnh theo nhân vật địa phương của camera, tính Humanoid , điều chỉnh trạng thái hiện tại của nhân vật và Humanoid.CameraOffset .
Khi đặt vào một BasePart, các script máy ảnh theo vị trí của nó, với một lỗi trục trong trường hợp của VehicleSeats .
CameraSubject không thể được đặt thành nil . Cố gắng làm như vậy sẽ đưa nó trở về giá trị trước đó của nó.
Để khôi phục CameraSubject về giá trị mặc định của nó, thiết lập nó thành Humanoid của nhân vật địa phương của bạn :
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
Các tập tin mặc định của Roblox camera có một số hành vi tích hợp. Cài đặt thuộc tính này hiệu chuyển giữa các hành vi Enum.CameraType khác nhau. Lưu ý rằng một số loại máy ảnh yêu cầu một Camera.CameraSubject hợp lệ để hoạt động một cách chính xá
Các cảm biến hình ảnh mặc định sẽ không di chuyển hoặc cập nhật máy ảnh nếu CameraType được đặt thành Enum.CameraType.Scriptable . Đối với thông tin chi tiết về việc đặt và xoay máy ảnh thủ công, hãy xem Camera.CFrame .
Đối với tất cả các cài đặt CameraType , ngoại trừ Class.Camera.CameraSubject|CameraSubject , thuộc tính Enum.CameraType.Scriptable đại diện cho thể đối tượng cuối cùng mà máy ảnh của camera của bạn đang đặt 1> Class.Camera.Focus1>
DiagonalFieldOfView
Đặt số độ trong hướng ngang (từ một góc của viewport đến góc ngược lại) mà máy ảnh có thể xem. Xem FieldOfView để có một giải thích chung hơn về field of view.
Lưu ý rằng DiagonalFieldOfView đại diện cho khu vực xem trước màn hình đầy đủ mà có thể bị che khuất bởi những khe hoặc chân lý cắt trên một số thiết bị. Xem Camera để biết thêm thông tin.
FieldOfView
Thuộc tính FieldOfView quy định số độ trong hướng dọc mà máy ảnh có thể xem. Thuộc tính này được kẹp giữa 1 và 120 độ và mặc định ở 70. Các trường nhìn quá thấp hoặc quá cao không được khuyến nghị bởi vì chúng có thể gây nhầm lẫn
Lưu ý rằng việc tăng trưởng đồng phục được thực hiện, có nghĩa là các trụ cột dọc và ngang luôn luôn liên quan với tỷ lệ kích thước của màn hình.
Các mục dùng được đề xuất cho FieldOfView (FOV) bao gồm:
- Giảm FOV để cho cảm giác phóng đại, ví dụ khi sử dụng kính thiên văn.
- Tăng FOV khi người chơi "chạy" để cho cảm giác thiếu kiểm soát.
Lưu ý rằng FieldOfView đại diện cho khu vực xem được thấy bởi Camera đang hiển thị vào khu vực hiển thị đầy đủ có thể bị che khuyết bởi các nốt hoặc chân bên trên một số thiết bị. Xem Class.Camera. ViewportSize|View
FieldOfViewMode
Cảm nhận ngang của máy ảnh (FOV) phải được cập nhật để phản ánh những thay đổi ViewportSize . Giá trị của FieldOfViewMode định nghĩa giá trị FOV được giữ ổn định.
Ví dụ, khi thuộc tính này được đặt để Enum.FieldOfViewMode.Vertical, FOV ngang được cập nhật khi kích thước viewport được thay đổi, nhưng FOV dọc được giữ nguyên. Nếu thuộc tính này được đặt để Entity.Field
Focus
Một số hoạt động phần mềm trên chuỗi của máy chủ, chẳng hạn như cập nhật chiếu sáng, có thể mất thời gian hoặc nỗ lực tính toán để hoàn thành. Thông số Tập trung của máy chủ cho biết khu vực trong 3D khi thực hiện c
Các câu lệnh máy ảnh mặc định của Rob
Trung tâm hóa không có ảnh hưởng đến vị trí hoặc hướng của máy ảnh; xem Camera.CFrame để làm điều đó.
HeadLocked
Bật/tắt màn hình theo dõi nhịp mắt của người chơi bằng thiết bị VR. Khi true (mặc định), máy chủ kết hợp Camera.CFrame với Enum.UserCFrame của
local UserInputService = game:GetService("UserInputService")local camera = workspace.CurrentCameralocal headCFrame = UserInputService:GetUserCFrame(Enum.UserCFrame.Head)headCFrame = headCFrame.Rotation + headCFrame.Position * camera.HeadScale-- Điều này tương đương với Camera:GetRenderCFrame()local renderCFrame = camera.CFrame * headCFrame
Nó được khuyến nghị để không vô hiệu hóa thuộc tính này vì những lý do sau đây:
- Người chơi có thể bị bệnh chuyển động nếu giải pháp theo dõi đầu tương đương không được thêm vào.
- Động cơ Roblox thực hiện tối ưu hóa độ trễ khi HeadLocked là đúng.
Xem thêm
- VRService:GetUserCFrame() which can be used to obtain the CFrame of the head.
- VRService:RecenterUserHeadCFrame() được sử dụng để làm mới những gì đang ở trên đầu và hướng của thiết bị VR hiện tại.
- Hàm Camera:GetRenderCFrame() trả lại Class.Camera.CFrame kết hợp với Datatype.CFrame của đầu người dùng.
HeadScale
HeadScale là kích thước của phối cảnh của người dùng khi sử dụng VR.
Kích thước của 1 stud ở VR là 0.3 meters / HeadScale , có nghĩa là các giá trị lớn hơn của HeadScale được tương đương với thế giới nhìn nhỏ hơn từ quan điểm của người dùng khi sử dụng cá
Điều này được điều khiển tự động bởi VRService.AutomaticScaling để điều chỉnh avatarđiểm của người chơi với kích thước của họ. Nếu bạn định điều khiển HeadScale của riêng mình
Điều này không nên được lẫn lộn với Humanoid.HeadScale mà là một NumberValue con cái của một Humanoid để điều khiển quy mô của nó.
MaxAxisFieldOfView
Thuộc tính MaxAxisFieldOfView đặt số độ trên trục quang điện dài nhất mà máy ảnh có thể xem.
Khi trục dài nhất là trục ngang, thuộc tính này sẽ hành xử tương tự như thuộc tính FieldOfView. Đây là thông thường khi thiết bị ở trong một hướng cắt. Ở một hướng cắt khác, trục dài sẽ là trụ
NearPlaneZ
Thuộc tính gần máy bay gần như mô tả khoảng cách xa của máy bay gần trong phim, ở studs. Gần máy bay là một máy bay hình họa địa hình đang ngồi trước Camera.CFrame
VRTiltAndRollEnabled
Điều này đổi vị trí áp dụng cho người dùng khi đang sử dụng thiết bị VR.
Để ngăn chặn bệnh chuyển động, thế giới hình ảnh nên được giữ ổn cấp. Khi đổi vị trí và cuộn tấm mắt của người chơi trong khi sử dụng thiết bị VR, nó có thể gây ra một kết nối bị mất giữa không gian vật lý của người chơi và không gian ảo tượng mà h
Vì những lý do này, nó thường khuyến nghị để để trang này bị vô hiệu hóa, trừ khi bạn đã thử nghiệm trải nghiệm của mình rộng rãi cho những hiệu ứng này. Ngay cả khi bật cài đặt ngả tầm mắt và cuộn tuyết, bạn vẫn có thể muốn đảm bảo ngườ
ViewportSize
ViewportSize trả lại kích thước khu vực an toàn của thiết bị trên màn hình hiện tại. Khu vực này là một hình chữ nhậu bao gồm khu vực Roblox top bar nhưng không bao gồm bất kỳ khe cắm hoặc th�
Như đã đề cập ở trên, ViewportSize không bằng kích thước toàn bộ k
Cuối cùng, lưu ý rằng ViewportSize không phải là kích thước màn hình thực tế mà máy ảnh sử dụng để hiển thị (máy ảnh hiển thị trong khu vực màn hình
Cập Nhật Camera
Chỉ có Camera hiện đang được tham khảo bởi Class.Workspace. CurrentCamera mới có kích thước Class.Camera.ViewportSize|ViewportSize</
Phương Pháp
GetPartsObscuringTarget
Phương thức này trả về một loạt các BaseParts đang che giấu các dòng nhìn giữa camera's Camera.CFrame và Vector3 pos
Tham số castPoints được đưa ra như một dàn Vector3 位. Ghi nhớ rằng dàn BaseParts được trả lại là trong một thứ tự ngẫu nhiên và không cung cấp thêm
local camera = workspace.CurrentCameralocal castPoints = {Vector3.new(0, 10, 0),Vector3.new(0, 15, 0)}local ignoreList = {}local partsObscuringTarget = camera:GetPartsObscuringTarget(castPoints, ignoreList)
Nếu Terrain che giấu một điểm cast, BaseParts che giấu điểm cast giữa các điểm cast của Terrain và cast point sẽ không được trả lại.
Tham Số
Một dàn Instances đó nên được lãng quên, cùng với những con cháu của nó.
Lợi Nhuận
Một dàn bộ BaseParts che giấu dòng nhìn giữa máy ảnh của camera Camera.CFrame và castPoints .
Mẫu mã
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
Hàm này trả lại thực tế CFrame của Class.Camera như nó được render, bao gồm tác động của VR (VR head transformations are not applied to the Class.Camera.CFrame property, so it is best practice to use
Ví dụ, khi sử dụng VR, Camera thực sự được hiển thị tại CFrame sau đây:
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
Việc xử lý của máy ảnh CFrame sẽ chỉ được thay đổi để tính đầu khi tính chất Camera.HeadLocked được thực hiện.
Lợi Nhuận
GetRoll
Hàm này trả về, bằng radian, cuộn dưới được ứng dụng cho Camera bằng cách sử dụng Camera:SetRoll() . Cuộn dưới được định nghĩa là quay xung quanh trục Z của máy ảnh.
Hàm này chỉ trả lại hành động cuộn được áp dụng bằng cách sử dụng hàm Camera:SetRoll() . Hành động cuộn được áp dụng bằng tay không được tính. Để nhận lại hành động cuộn thực tế của Camera.CFrame, b
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
Lợi Nhuận
Các thẻ hiện tại được áp dụng bởi Camera:SetRoll() , trong radians.
Mẫu mã
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
Hàm này tạo một đơn vị Ray từ một vị trí 2D trên màn hình (được định trong pixel), tính toán cho GUI bên trong. Ở đó, Ray đến từ đối tượng tương đư
Vì chức năng này công nhận GUI inset, thì lệch được áp dụng cho các thành phần GUI (như từ thanh trên cùng) được tính. Điều này có nghĩa là vị trí màn hình được quy định sẽ bắt đầu ở góc trên cùng bên dưới thanh trên cùng. Đối vớ
Như Ray đã tạo là một đơn vị ray, nó chỉ dài một stud. Để tạo ra một ray dài hơn, bạn có thể làm theo những bước theo dõi:
local camera = workspace.CurrentCameralocal length = 500local unitRay = camera:ScreenPointToRay(100, 100)local extendedRay = Ray.new(unitRay.Origin, unitRay.Direction * length)
Hành động này chỉ hoạt động cho máy ảnh Workspace hiện tại. Các máy ảnh khác, chẳng hạn như những gì bạn tạo cho một ViewportFrame , có kích thước viewport ban đầu là (
Tham Số
Vị trí trên trục X, trong pixel, của điểm màn hình mà để xuất Ray . Điểm này tương ứng với khu vực GUI.
Vị trí trên trục Y, trong pixel, của điểm màn hình để xuất phát từ Ray . Điểm này tương ứng với GUI.
Lợi Nhuận
SetRoll
Hành động này đã lỗi thời và không còn xem là tốt nhất.
Hàm này đặt mức quay hiện tại, bằng radian, của Camera. Cuộn dịch được ứng dụng sau khi Camera.CFrame và đại diện cho sự quay xung quanh trục Z của máy ảnh.
Ví dụ, sau đây sẽ invert Camera :
workspace.CurrentCamera:SetRoll(math.pi) -- math.pi radians = 180 degrees
SetRoll không có hiệu lực đối với bất kỳ cuộn dưới đất được ứng dụng bằng cách sử dụng thuộc tính Camera.CFrame. Cuộn dưới đất được ứng dụng bằng cách sử dụng thuộc tính Camera.CFrame này kh
Hành nghề này chỉ có thể được sử dụng khi Camera.CameraType được cài đặt thành 'Scriptable' , bất kể có sử dụng mặc định các script máy ảnh không. Nếu nó được sử dụng với bất kỳ Camera.CameraType khác, một cảnh b
Bất kỳ cuộn dịch được áp dụng bằng chức năng này sẽ bị mất khi Camera.CameraType được thay đổi từ 'Scriptable' .
Để có được bộ dữ liệu cuộn dùng chức năng này sử dụng Camera:GetRoll() .
Vì chức năng này đã lỗi thời, bạn được khuyến nghị sử dụng cuộn phép thay vì ứng dụng cuộn phép vào Camera bằng cách sử dụng tính năng Camera.CFrame. Ví dụ:
local currentCFrame = workspace.CurrentCamera.CFramelocal rollCFrame = CFrame.Angles(0, 0, roll)workspace.CurrentCamera.CFrame = currentCFrame * rollCFrame
Tham Số
Lợi Nhuận
ViewportPointToRay
Hàm này tạo một đơn vị Ray từ một vị trí 2D trong các vị trí an toàn của các thiết bị, được xác định bằng các pixel. Ray nguyên từ địa điểm 2D tương đương với vị trí 2D trên thế giới tạ
Như được minh họa bên dưới, (0, 0) đại diện cho điểm trên cùng bên trái của Roblox top bar. Điều này có nghĩa là vị trí đầu vào 2D không đại diện cho khu vực Enums.Screen
Lưu ý rằng UI instants sử dụng một hệ thống vị trí khác ( GuiObject.AbsolutePosition sử dụng hệ thống vị trí CoreUISafeInsets trong khi chức năng này sử dụng hệ thống vị
Lưu ý cũng rằng chức năng này chỉ hoạt động cho máy ảnh Class.Workspace. CurrentCamera. Các máy ảnh khác, chẳng hạn như những gì bạn tạo cho một
Hàm này có thể được sử dụng cùng với thuộc tính ViewportSize để tạo một tia từ trung tâm màn hình, ví dụ:
local Workspace = game:GetService("Workspace")local camera = Workspace.CurrentCameralocal viewportPoint = camera.ViewportSize / 2local unitRay = camera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y, 0)
Như Ray đã tạo là một đơn vị ray, nó chỉ dài một stud. Để tạo ra một ray dài hơn, bạn có thể làm theo những bước theo dõi:
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)
Tham Số
Vị trí trên trục X , in pixel, của điểm xem để xuất phát Ray , trong khu vực an toàn của thiết bị.
Vị trí trên trục Y , trong ô tượng, của điểm xem để xuất phát Ray , trong điểm an toàn thiết bị.
Lợi Nhuận
WorldToScreenPoint
Hàm này trả về vị trí màn hình và độ sâu của một Datatype.Vector3``worldPoint và có điểm này trong giới hạn của màn hình không.
Hành này xem xét các thành phần GUI hiện tại, chẳng hạn như không gian được chiếm bởi thanh trên cùng, có nghĩa là vị trí 2D được trả lại được trong cùng một thời gian như vị trí GUI và có thể được sử dụng để đặt các thành phầ
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
Ghi chú các hàm này không thực hiện bất kỳ raycasting và boolean cho biết có phải worldPoint nằm trong giới hạn của màn hình sẽ là true bất kể có điểm được ẩn bởi BaseParts hoặc 1> Class.Terrain1>
Tham Số
Lợi Nhuận
Một tuỳ đơn bao gồm, trong số:
Một biểu tượngBoolean cho biết nếu worldPoint nằm trong giới hạn của màn hình.
WorldToViewportPoint
Hàm này trả về vị trí màn hình và độ sâu của một Datatype.Vector3``worldPoint và có điểm này trong giới hạn của màn hình không.
Hành chức này không tính đến GUI hiện tại đã được thiết lập, chẳng hạn như không gian đã chiếm dụng bởi thanh trên cùng của màn hình, có nghĩa là vị trí 2D được trả lại được lấy từ góc trên cùng của cửa sổ. Trừ khi bạn đang s
Đối với một chức năng tương tự khác đếm cho GUI inset, xem 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
Ghi chú các hàm này không thực hiện bất kỳ raycasting và boolean cho biết có phải worldPoint nằm trong giới hạn của màn hình sẽ là true bất kể có điểm được ẩn bởi BaseParts hoặc 1> Class.Terrain1>
Tham Số
Lợi Nhuận
Một tuỳ đơn bao gồm, trong số:
Một Vector3 whose X and 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
Một biểu tượngBoolean cho biết nếu worldPoint nằm trong giới hạn của màn hình.
Sự Kiện
InterpolationFinished
Sự kiện này bắt đầu khi Camera đã hoàn thành việc dịch chuyển bằng cách sử dụng chức năng Camera:Interpolate() .
Sự kiện này sẽ không kích hoạt nếu một tween bị ngắt do Camera:Interpolate() được gọi lại.
Bạn được khuyến khích sử dụng TweenService để hoạt hóa Camera thay vào đó, vì nó đáng tin cậy hơn và cung cấp nhiều lựa chọn hơn cho việc dễ dàng hóa các kiểu.