Engine

英文原地址

Matter.Engine 模块涵盖了创建和操作引擎的方法。引擎是管理世界更新的控制器。

Matter.Engine

Matter.Engine 模块涵盖了创建和操作引擎的方法。引擎是管理世界更新的控制器。

方法

Matter.Engine.clear(engine)

清除引擎,包括世界(world)碰撞对(pairs)碰撞粗测(broadphase)

  • engine: Engine

Matter.Engine.create([options])

创建一个新的引擎。options参数是一个对象,用以设置覆盖默认值的属性。所有的属性都有默认值,而且许多属性是基于其他属性来进行预先计算的。options可以设置的配置项请见下文。

  • [options] Object - 可选

返回:

Engine

Matter.Engine.merge(engineA, engineB)

合并两个引擎,方法是保留engineA的配置,但是将 world 替换为engineB的。

  • engine: Engine

Matter.Engine.run(engine)

Runner.run的别名,请参阅Matter.Runner获取更多信息。

  • engine: Engine

Matter.Engine.update(engine, [delta=16.666], [correction=1])

delta毫秒的时间更新模拟的世界。corretion参数是可选数字,用以指定时间更新的校正因子。当delta参数在更新期间发生变化的情况下,该参数可以用来改进更新模拟的准确性。correction的值为delta/lastDelta,即delta在最后一步变化的百分比。因此,当无修正或不需要修正时,该值为1。参见该文章Time Corrected Verlet了解更多信息。

触发beforeUpdateafterUpdate事件。
触发collisionStartcollisionActivecollisionEnd事件。

  • engine Engine
  • [delta=16.666] 数字 可选
  • [correction=1] 数字 可选

属性

属性名 类型 默认值 描述
engine.broadphase Grid Matter.Grid的实例 碰撞粗侧控制器的实例。默认值是由Engine.create创建的Matter.Grid实例。
engine.constraintIterations Number 2 整数,指定每次更新的约束迭代次数。该值越高,模拟的质量就越高,但会以牺牲性能为代价。通常来讲默认值2足够了。
engine.enableSleepingBoolean Boolean false 设置引擎是否允许通过Matter.Sleeping设置为睡眠模式。这么做可以提高稳定性和性能,但以牺牲准确性为代价。
engine.plugin Object 为存储插件特定属性而保留的对象。
engine.positionIterations Number 6 整数,指定每次更新的位置迭代次数。值越高,模拟的质量就越高,但会以牺牲性能为代价。
engine.timing Object 包含了引擎时间系统相关的属性
engine.timing.timeScale Number 1 指定所有刚体的时间全局缩放因此。设置为0时将冻结模拟。设置为0.1则会产生慢动作效果,1.2会产生加速效果。
engine.timing.timestamp Number 0 指定当前的模拟时间(从0开始,以毫秒为单位)。它在每个Engine.update上都根据所给的delta参数进行增加。
engine.velocityIterations Number 4 设置每次更新的速度迭代次数。值越高模拟的质量越高,同时也会消耗更多性能。
engine.world World Matter.World 实例 包含所有模拟物体和约束条件的世界对象。

事件

以下事件均由Matter.Engine.create创建的对象派发,而后由使用Matter.Events.on订阅了事件的对象接收。

Events.on(engine, "afterUpdate", callback)

在引擎更新和所有碰撞事件结束后触发。

payload 类型 描述
event Object timestamp(Number)
事件的engine.timing.timestamp
source
事件的源对象
name
事件名称

Events.on(engine, "beforeUpdate", callback)

在更新开始前触发。

payload 类型 描述
event Object timestamp(Number)
事件的engine.timing.timestamp
source
事件的源对象
name
事件名称

Events.on(engine, "collisionActive", callback)

在引擎更新后触发,会提供当前帧中所有发生碰撞的物体对列表(如果有的话)。

payload 类型 描述
event Object pairs
受影响的碰撞对列表
timestamp(Number)
事件的engine.timing.timestamp
source
事件的源对象
name
事件名称

Events.on(engine, "collisionEnd", callback)

在引擎更新后触发,会提供当前帧中所有已经碰撞完的物体对列表(如果有的话)。

payload 类型 描述
event Object pairs
受影响的碰撞对列表
timestamp(Number)
事件的engine.timing.timestamp
source
事件的源对象
name
事件名称

Events.on(engine, "collisionStart", callback)

在引擎更新后触发,会提供当前帧中所有已开始碰撞的物体对列表(如果有的话)。

payload 类型 描述
event Object pairs
受影响的碰撞对列表
timestamp(Number)
事件的engine.timing.timestamp
source
事件的源对象
name
事件名称