FindObjOnRayWithIgnoreList

格式

FindObjOnRayWithIgnoreList(ray,ignoreTable,Distance)

简介

FindObjOnRay的变体,返回射线打中的对象和终点坐标,忽略输入表格中的对象。

参数

变量名称 类型 默认 描述
ray Ray Ray 射线
ignoreTable table ignoreTable 要忽略的对象列表
Distance float -1 Distance最远查找距离,默认-1无限距离

返回值

类型 描述
RWObject target 找到的对象
Vector3 point 射线命中点坐标
Vector3 normal 接触面法线

实例

在工作区创建零件和零件1,调整大小便于射线检测。脚本的功能是不停从摄像机打出到鼠标位置的射线,在射线打中对象后,将当前物体颜色改变,并观察打印返回值的是否正常。

wait(1)
local workSpace=GetService("WorkSpace") --获取工作区服务

local part = RWObject:New("Part") --生成两个零件,修改大小和位置
part.Position=Vector3.New(2,0,2)
part.Scale=Vector3.New(0.5,0.5,0.5)
part.Parent=workSpace
local part1 = RWObject:New("Part")
part1.Name="零件1"
part1.Position=Vector3.New(-2,0,2)
part1.Scale=Vector3.New(2,2,2)
part1.Parent=workSpace

local function MyUpdate() --从摄像机啊发射射线检测碰触到的物体,并将碰触到的物体变红,忽略大的零件和新底板
    local ray = workSpace.Camera:ScreenToRay(Mouse.MousePosition)
    local mt = {workSpace.零件1,workSpace:WaitForChild("New Plate")} 
    local e,p = workSpace:FindObjOnRayWithIgnoreList(ray,mt,10)
    if e then
        e.Color = Vector3.New(255,0,0)
        print(tostring(e.Name))
        print(tostring(p))
    end
end

local function coroutineUpdate()
    while true do
        coroutine.wait(0.1)
        MyUpdate()
    end
end

coroutine.start(coroutineUpdate)
文档更新时间: 2020-09-18 11:51   作者:王辰剑