碰撞引擎接口

371次阅读
没有评论

共计 1578 个字符,预计需要花费 4 分钟才能阅读完成。

ICOLLISIONENGINE 脚本接口

该接口提供对 Construct 碰撞引擎的访问,例如识别两个对象是否相交。它通常通过 .ICollisionEngineruntime.collisions

碰撞 API

运行
对 IRuntime 脚本接口的引用。
测试重叠(instA,instB)
返回一个布尔值,该布尔值指示两个实例(必须是 IWorldInstance 的派生)是否在其当前位置重叠。
// Example code
if (runtime.collisions.testOverlap(instA, instB))
{
console.log("Collision found!");
}
testOverlapAny(inst,iterable)
测试 IWorldInstance 是否与可迭代对象(可以是任何类型的可迭代对象,如数组)提供的任何其他 s 重叠。如果找到重叠,则返回重叠中的第一个实例的。如果未发现与任何提供的实例重叠,则返回。IWorldInstanceIWorldInstanceiterableinstnull
请注意,返回值也可以用作 truey 或 falsey,例如在语句中。if
testOverlapSolid(inst)
测试 IWorldInstance 是否与 Solid 行为重叠任何其他实例。如果找到重叠,则返回第一个找到的重叠实体实例。如果未找到重叠,则返回。IWorldInstanceinstnull
请注意,返回值也可以用作 truey 或 falsey,例如在语句中。if
setCollisionCellSize(宽度、高度)
Construct 通过将所有对象分类到“单元格”中来优化碰撞检查。默认单元格大小是视口大小。更改碰撞单元大小可调整碰撞性能、内存使用和移动对象开销之间的权衡。通常,默认值适用于大多数项目,但是在小区域内有大量对象测试碰撞的项目(例如“子弹地狱”风格的游戏)可能会受益于较小的碰撞单元大小。使用性能测量来确定最佳尺寸。冲突单元格大小也会影响 返回的实例数。getCollisionCandidates()
getCollisionCellSize()
返回指示当前碰撞单元大小的返回。[width, height]
getCollisionCandidates(iObjectClasses,domRect)
仅有效地检索布局中指定矩形区域附近的给定对象类的实例。这使用了 Construct 的“碰撞单元”优化,并允许大幅减少需要执行的碰撞检查次数。例如,此方法不是针对给定对象类的所有实例检查冲突(可能涉及分布在大型布局中的数千个实例),而是允许仅有效地检索区域中可能适合进行碰撞检查的少数实例。参数的工作方式如下:
iObjectClasses 是 IObjectClass 或 IObjectClass 的数组,指定感兴趣的对象类,例如 . 仅返回属于这些对象类的实例。还可以指定族,并且将包括属于族中任何对象类型的所有实例。runtime.objects.Enemy
domRect 是指定布局中矩形区域的 DOMRect。将返回此区域附近的实例。将返回指定矩形内的所有实例,但也可能返回矩形附近但外部的某些实例,因为选中的区域是在碰撞单元大小的分辨率下完成的;但是,不会包括远离该区域的实例,这是此方法的主要目的。
该方法返回 IWorldInstance 数组,其中实例靠近指定区域。另请注意,由于使用的算法,返回的实例数组可能包含重复项 – 即同一实例可能在数组中出现不止一次。可以通过使用返回的数组创建 Set 来过滤这些项目,因为 Set 仅存储唯一的项目;但是,这会增加性能开销。根据所使用的算法,可能不需要消除重复项。例如,如果目标是识别任何碰撞,然后销毁对象,那么是否执行两次相同的检查并不重要。但是,如果目标是增加每个重叠的分数,则必须消除重复项才能获得正确的预期结果。

正文完
 0
评论(没有评论)