FindObjOnRay

格式

FindObjOnRay(ray,ignoreInstance,Distance)

简介

发出一条射线,当与碰到的第一个零件类对象接触时,返回接触的对象、接触点坐标、接触面的曲面法线。

参数

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

返回值

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

实例

在客户端最先加载中创建客户端脚本
不停从摄像机打出到鼠标位置的射线,忽略表中对象,射线打到对象后,当前物体颜色改变,并观察打印返回值的是否正常。

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

local function MyUpdate()
    local ray = workSpace.Camera:ScreenToRay(Mouse.MousePosition) --从摄像机到鼠标位置的射线
    local e,p,n = workSpace:FindObjOnRay(ray,workSpace:WaitForChild("New Plate"),10) --根据射线找到对象,并忽略列表中的指定对象
    if e~=nil then
        e.Color = Vector3.New(255,0,0) --将射线经过的非忽略对象变红
        print(tostring(e.Name)) --打印对象的名称
        print(tostring(p)) --打印射线接触的位置
        print(tostring(n)) --打印接触点的法线
    end
end    
local function coroutineUpdate()
    while true do
        coroutine.wait(1) --每1秒执行射线检测
        MyUpdate()
    end
end
coroutine.start(coroutineUpdate)
文档更新时间: 2020-09-18 14:23   作者:王辰剑