视线

520次阅读
没有评论

共计 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:只读布尔值,指示是否找到交集。
    此接口上的其余属性仅在 didCollidetrue 时设置。
  • hitXhitY
  • getHitPosition():如果 didCollide 为真,则光线相交的第一个障碍物的只读位置在布局坐标中。该方法同时返回两个值。
  • hitDistance:如果 didCollidetrue,则光线起点与命中位置之间的只读距离。
  • hitUid:如果 didCollidetrue,则为射线相交的第一个障碍物的实例的只读 UID
  • getNormalX(长度)getNormalY(长度)getNormal(长度):如果 didCollidetrue,则返回沿曲面法线向量在给定距离处的位置。变体同时返回两个值。getNormal()
  • 正常角度:如果 didCollidetrue,则曲面的只读角度在交点处法线,以弧度为单位。
  • getReflectionX(长度)getReflectionY(长度)getReflection(长度):如果 didCollidetrue,则返回沿反射矢量在给定距离处的位置。变体同时返回两个值。getReflection()
  • 反射角度:如果 didCollide 为真,则相交点处反射的只读角度,以弧度为单位。
正文完
 0
评论(没有评论)