FindObjOnRayWithIgnoreList
格式
FindObjOnRayWithIgnoreList(ray,ignoreTable,Distance)
- 函数
- 所属对象:WorkSpace
简介
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 作者:王辰剑