一、射线节点
LineTraceByChannel:沿给定的线执行碰撞追踪,并返回首个阻挡命中,只返回对特定追踪通道响应的对象。
start:射线起始点
end:射线结束点
Trace Channel:检测通道
Trace Complex:针对复杂碰撞进行测试,false则针对简单碰撞进行测试
Actors to Ignore:忽略的Actor数组
Draw Debug Type:射线显示的类型
Ignore Self:是否忽略自己
Out Hit :返回碰撞到的物体
Return Value:返回有没有碰到物体,返回值为bool值
注意:Trace Channel 检测通道,该节点中默认的有两个Visibility 及 Camera,这两个通道选项与场景中的物体中,自身设置的可检测到的通道有关。
二、检测通道设置
第一种:使用系统自带的物体,如:Base下的立方体,物体本身带有检测通道的阻挡属性。也可以使用Custom更改碰撞预设值。
第二种:自己使用蓝图类创建的Actor,在蓝图类中,选中拖入的物体,在细节面板Collision属性中可以设置碰撞响应(忽略,重叠,阻挡),用来设置是否可以在对应通道中检测到。(追溯响应中设置,分别为Visibility及Camera)
将碰撞预设值,更改为Custom,就可以自己设置响应。只有阻挡被选中,才可以在通道中被检测到。
三、Draw Debug Type 属性
该属性是用来调试自用的,For One Frame :只存在一帧,效果就是可能看不到,也可能看到后立马消失。
For Duration:在一段时间内,射出的线可见,时间过后消失
Dersistent:持久存在的。
一般调试的时候,选择For Duration类型。
四、使用Break Hit Result节点将射线检测到的物体属性分解,方便后续节点调用此物体中的属性。
部分使用参数:Time:沿射线方向多长时间发生碰撞范围从[0,1],如果发生碰撞,则返回开始和结束的时间,如果没命中,则返回1.
Distance:返回射线起始点 到 检测到的物体(hit)的距离,如果存在检测本身,则返回0.
Location:检测到物体(hit)的世界坐标位置
HitActor:检测到的物体(hit)本身Actor
四、按下F键像摄像机前方发出射线检测。
1.使用节点:获取摄像机变量,F键,射线节点
2.射线节点需要Start 及End ,因为从摄像机开始向前方发射射线,所以获取摄像机Camera的世界坐标系中当前的位置坐标,使用GetWorldLocation节点获取的位置为Start。
使用 GetForwardVector节点 获取到像机当前的正前方向量,但是这个向量是单位向量,乘以一个参数,将正前方向量增大,使用Vector*float节点,两个向量相加 使用 vector + vector 节点 得到的结果为End。
3.连线
编译后运行,查看射线效果
四、其他射线节点
1.LineTraceForObjects 将沿给定的线执行碰撞追踪并返回追踪命中的首个物体(须与特定物体类型匹配)对Object Types 属性进行类型指定。
2.MultiLineTraceForObjects 将沿给定的线执行碰撞追踪并返回所有遭遇的命中,包含首次阻挡命中,只返回与特定物体类型相匹配的物体。
3.MultiLineTraceByChannel 将沿给定线条执行碰撞追踪,并返回所有遭遇的命中,包含首次阻挡命中,只返回对特定追踪通道响应的对象。
后面两个节点返回的都是数组形式,在给定的线上碰撞到的物体都会被保存到该数组中。
五、增加射线检测通道
1.在世界大纲视图,工具栏选择编辑/项目设置。选择引擎中的Collision。
2.选择后,在显示的界面,有两个选项分别为Object Channels 和 Trace Channels ,分别对应两种不同的节点,现在只在Trace Channels中增加新的通道,点击新建踪迹通道,进行命名,及默认的被检测方式。创建完成后,就能在LineTraceByChannel中通道显示,并且在蓝图类中选中显示的物体,要设置好Collision面板中的通道检测方式。