Phóng射

*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ấp độ cơ bản nhất, raycasting là hành động gửi một tia laser từ một điểm Datatype.Vector3 đến một hướng định hướng với một chiều dài định nghĩa. Sau khi gửi, bạn có thể xác định nếu tia laser đ

Laser được bắn bởi các quả cầu flutting, và raycasting xác định liệu một laser có đâm vào một nền tảngkhông. Các bệ được chạm bởi các laser được tạm thời phá hủy.

Sử dụng một Ray

Bạn có thể thả một ngọn lửa với phương pháp WorldRoot:Raycast() ( workspace:Raycast() ) từ một nguồn gốc Vector3 trong một hướng 1> Datatype.Vector31> .

Cơ bản Raycast

local rayOrigin = Vector3.new(0, 0, 0)
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)

Lọc

Class.WorldRoot:Raycast() nhận một đối tượng RaycastParams bên trong đó cho phép raycast lựa chọn hoặc loại bỏ một số BaseParts , bỏ qua vật liệu 0>Water0> cho 3>T

Chìa khóaMô tả
FilterDescendantsInstancesArray của các đối tượng có con cháu được sử dụng để lọc các ứng viên raycasting.
FilterTypeEnum.RaycastFilterTypeenum qui định cáchFilterDescendantsInstancesarray được sử dụng trong hoạt động raycast.
  • Exclude — Mọi BasePart đều được xem như ngoại trừ những người là con của các đối tượng trong ma trận.
  • Include — Chỉ xem xét BaseParts mà thôi, những đối tượng con của đối tượng trong mat阵 được xem xét.
IgnoreWaterBoolean which determines whether the Vật liệu Nước material is considered when raycasting against Terrain .
CollisionGroupTên dòng của nhóm va chạm được sử dụng cho hoạt động raycasting.
Lọc Raycast

local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {script.Parent}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)

Tính toán Hướng

Khi hiện hành, bạn có thể tính toán một vectơ hướng từ không xác định (rayDirection ) bằng cách sử dụng một vectơ hướng từ một nguồn đến một đích. Điều này hữu ích khi bạn cast một ray giữa hai điểm có thể thay đổi, ví dụ như từ một nhân vật này sang mộ

  1. Vectơ nguồn cộng một vectơ hướng tỏ vị trí của tia:

    rayOrigin + rayDirection = rayDestination

  2. Giảm rayOrigin từ cả hai bên công thức:

    rayOrigin + rayDirectionrayOrigin = 0> rayDestination0> − 3> rayOrigin3>

  3. Hướng của thanh ray bằng khối lượng tối thiểu của nó:

    rayDirection = rayDestinationrayOrigin


local rayOrigin = workspace.TestOrigin.Position
local rayDestination = workspace.TestDestination.Position
local rayDirection = rayDestination - rayOrigin
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)

Phát hiện đòn đánh

Nếu raycasting operation đánh vào một BasePart hoặc Terrain ô tốt, một 1> Datatype.RaycastResult1> đối tượng được trả lại chứa các kết quả. Để kiểm tra cho một

Thuộc tínhMô tả
InstanceCác tế bào BasePart hoặc Terrain mà thanh ray đã chạm vào.
PositionVector3 vị trí của khe cắm giữa ray và Instance .
DistanceKhoảng cách giữa điểm gốc của thanh và điểm giao nối.
MaterialClass.Terrain tại điểm giao thoa.
NormalVector3 của vectơ bình thường của khuôn mặt kết nối.
Phát hiện đòn đánh bằng Raycast

local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)
if raycastResult then
print("Instance:", raycastResult.Instance)
print("Position:", raycastResult.Position)
print("Distance:", raycastResult.Distance)
print("Material:", raycastResult.Material)
print("Normal:", raycastResult.Normal)
else
warn("No raycast result!")
end