共计 1587 个字符,预计需要花费 4 分钟才能阅读完成。
视线行为脚本界面
该接口派生自 IBehaviorInstance
,用于添加特定于视线行为的 API ILOSBehaviorInstance
。
该方法返回一个附加接口 ILOSBehaviorRaycastRay()
。
示例 示例:
有关使用该方法执行光线投射的演示,请参阅脚本光线投射示例 castRay()
。
视线行为 视线行为 API:
- 范围:设置或获取视线可以达到的最大距离(以像素为单位)。如果一个物体比这个距离更远,那么即使中间的空间是清晰的,该物体也永远不会有视线。
- 锥形视图:设置或获取视锥的角度(以弧度为单位),在该角度中,对象可以与其他对象保持视线,相对于对象的当前角度。
addObstacle(iObjectClass)
:如果Obstacles
属性为Custom
,则将给定的IObjectClass
添加为另一种对象,以计为视线障碍。请注意,虽然这是实例的方法,但它会影响整个行为。清除障碍物(iObjectClass)
:如果Obstacles
属性为Custom
,则清除使用addObstacle()
方法添加的所有障碍。请注意,虽然这是实例的方法,但它会影响整个行为。hasLOStoPosition(x,y)
:返回一个布尔值,该布尔值指示对象当前是否具有布局坐标中某个位置的视线,并尊重视域和视锥。hasLOSBetweenPositions(fromX,fromY,fromAngle,toX,toY)
:返回一个布尔值,指示布局中的任意两个位置之间是否存在视线,而不是使用对象自己的位置。这尊重了视程和视锥,基于fromAngle
,以弧度为单位。castRay(fromX,fromY,toX,toY,useCollisionCells = true)
:检查布局中任意两个位置之间的障碍物交集,返回表示结果的接口。检查返回的接口的属性,以确定是否找到了交叉点。如果找到交叉点,接口的其他属性指示命中位置、法线角和反射角。有关详细信息,请参阅下面的接口文档。useCollisionCells
参数指定在测试视线时是否使用碰撞像元优化。通常这更快,但在某些情况下,在极长的距离上可能会更慢。ILOSBehaviorRaydidCollideILOSBehaviorRay
此方法忽略视域和视锥,以允许光线投射布局中的任意位置。- 射线:返回表示上次方法调用结果的接口
ILOSBehaviorRaycastRay
。
ILOSBehaviorRay
接口::
此接口用于表示对 castRay()
的调用结果。它的所有属性都是只读的。
didCollide
:只读布尔值,指示是否找到交集。
此接口上的其余属性仅在didCollide
为true
时设置。hitX
、hitY
。getHitPosition()
:如果didCollide
为真,则光线相交的第一个障碍物的只读位置在布局坐标中。该方法同时返回两个值。hitDistance
:如果didCollide
为true
,则光线起点与命中位置之间的只读距离。hitUid
:如果didCollide
为true
,则为射线相交的第一个障碍物的实例的只读UID
。getNormalX(长度)
、getNormalY(长度)
、getNormal(长度)
:如果didCollide
为true
,则返回沿曲面法线向量在给定距离处的位置。变体同时返回两个值。getNormal()
。正常角度
:如果didCollide
为true
,则曲面的只读角度在交点处法线,以弧度为单位。getReflectionX(长度)
、getReflectionY(长度)
、getReflection(长度)
:如果didCollide
为true
,则返回沿反射矢量在给定距离处的位置。变体同时返回两个值。getReflection()
。反射角度
:如果didCollide
为真,则相交点处反射的只读角度,以弧度为单位。
正文完