Camera

Hiển Thị Bản Đã Lỗi Thời

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

Không Sao Chép

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

  • Đọc Song Song

    The CFrame of the Camera , defining its position and orientation in the 3D world.

  • Đọc Song Song

    Các Humanoid hoặc BasePart mà là chủ đề của Camera .

  • Đọc Song Song

    Định nghĩa Enum.CameraType để đọc bởi các脚本 máy ảnh.

  • Không Sao Chép
    Đọc Song Song

    Đặt góc của góc nhìn ngang của camera.

  • Đọc Song Song

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

  • Đọc Song Song

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

  • Đọc Song Song

    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.

  • Đọc Song Song

    Điều chỉnh kích thước của trụ cột người dùng khi sử dụng VR.

  • Không Sao Chép
    Đọc Song Song

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

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    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.

  • Đọc Song Song

    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.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    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

  • GetPartsObscuringTarget(castPoints : Array,ignoreList : Instances):Instances

    Đả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() .

  • Ghi Song Song

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

  • SetRoll(rollAngle : number):void

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

  • Ghi Song Song

    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.

  • Ghi Song Song

    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.

  • Ghi Song Song

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

  • ZoomToExtents(boundingBoxCFrame : CFrame,boundingBoxSize : Vector3):void

Thuộc Tính

CFrame

Đọc Song Song

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

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

Đọc Song Song

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

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

Không Sao Chép
Đọc Song Song

Đặ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

Đọc Song Song

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

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

Đọc Song Song

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

Đọc Song Song

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

HeadScale

Đọc Song Song

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

Không Sao Chép
Đọc Song Song

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

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

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

VRTiltAndRollEnabled

Đọc Song Song

Đ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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

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�

Mobile device screen with cutout showing device safe area.

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

Instances

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

castPoints: Array

Một mat阵 các Vector3 vị trí của điểm cast.

ignoreList: Instances

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

Instances

Một dàn bộ BaseParts che giấu dòng nhìn giữa máy ảnh của camera Camera.CFramecastPoints .

Mẫu mã

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

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

Các CFrame của Camera đang được hiển thị tại đây.

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ã

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

Ghi Song Song

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

depth: number

Sự sâu Camera , được biểu thị bằng dấu chấm câu, từ đó để bù đắp nguồn gốc của Ray .

Giá Trị Mặc Định: 0

Lợi Nhuận

Một đơn vị Ray , xuất phát từ vị trí thế giới được đưa ra bởi đường dẫn từ điểm dữ liệu được cho ở khoảng cách dài Vector3 . This ray được hướng theo hướng của Camera .

SetRoll

void

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

Tham Số

rollAngle: number

Góc cuộn, ở dạng radian, để được áp dụng cho Camera .


Lợi Nhuận

void

ViewportPointToRay

Ghi Song Song

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

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

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

depth: number

Sự sâu Camera , được biểu thị bằng dấu chấm câu, từ đó để bù đắp nguồn gốc của Ray .

Giá Trị Mặc Định: 0

Lợi Nhuận

Một đơn vị Ray, xuất phát từ vị trí thế giới được đề cập ở trên của Vector3 đã được định vị ở độ sâu được cho ở đây. This ray is oriented in the direction of the Camera .

WorldToScreenPoint

Ghi Song Song

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

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ố

worldPoint: Vector3

Vị trí thế giới Vector3 .


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 worldPoint from the top left corner of the screen, in pixels. The Vector31> Z1> component represents the depth of the 4> worldPoint4> from the screen (in studs).

  • 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

Ghi Song Song

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

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ố

worldPoint: Vector3

Vị trí thế giới Vector3 .


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.

ZoomToExtents

void

Tham Số

boundingBoxCFrame: CFrame
boundingBoxSize: Vector3

Lợi Nhuận

void

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.