Ở 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 đ
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óa | Mô tả |
---|---|
FilterDescendantsInstances | Array của các đối tượng có con cháu được sử dụng để lọc các ứng viên raycasting. |
FilterType | Enum.RaycastFilterTypeenum qui định cáchFilterDescendantsInstancesarray được sử dụng trong hoạt động raycast. |
IgnoreWater | Boolean which determines whether the Vật liệu Nước material is considered when raycasting against Terrain . |
CollisionGroup | Tê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.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastParams = RaycastParams.new()raycastParams.FilterDescendantsInstances = {script.Parent}raycastParams.FilterType = Enum.RaycastFilterType.ExcluderaycastParams.IgnoreWater = truelocal 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ộ
Vectơ nguồn cộng một vectơ hướng tỏ vị trí của tia:
rayOrigin + rayDirection = rayDestination
Giảm rayOrigin từ cả hai bên công thức:
rayOrigin + rayDirection − rayOrigin = 0> rayDestination0> − 3> rayOrigin3>
Hướng của thanh ray bằng khối lượng tối thiểu của nó:
rayDirection = rayDestination − rayOrigin
local rayOrigin = workspace.TestOrigin.Positionlocal rayDestination = workspace.TestDestination.Positionlocal rayDirection = rayDestination - rayOriginlocal 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ính | Mô tả |
---|---|
Instance | Các tế bào BasePart hoặc Terrain mà thanh ray đã chạm vào. |
Position | Vector3 vị trí của khe cắm giữa ray và Instance . |
Distance | Khoảng cách giữa điểm gốc của thanh và điểm giao nối. |
Material | Class.Terrain tại điểm giao thoa. |
Normal | Vector3 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.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastResult = workspace:Raycast(rayOrigin, rayDirection)if raycastResult thenprint("Instance:", raycastResult.Instance)print("Position:", raycastResult.Position)print("Distance:", raycastResult.Distance)print("Material:", raycastResult.Material)print("Normal:", raycastResult.Normal)elsewarn("No raycast result!")end