Matter.js之Engine

本文最后更新于:1 年前

Matter.Engine模块包含了创建和操作引擎的方法。引擎是管理更新模拟世界的一个控制器。

请参阅Matter.Runner以获得可选的游戏循环工具。

方法

create

Matter.Engine.create([options]) → Engine

创建一个新的引擎。选项参数是一个对象,它指定任何你想覆盖默认值的属性。所有属性都有默认值,并且大多数都是根据其他属性自动计算的。请参阅下面的属性部分以了解您可以通过选项对象传递的所有属性。

参数

名称 类型 默认值 说明
options Object {} 可选的选项对象

以下是options的默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var options = {
positionIterations: 6,
velocityIterations: 4,
constraintIterations: 2,
enableSleeping: false,
events: [],
plugin: {},
gravity: {
x: 0,
y: 1,
scale: 0.001
},
timing: {
timestamp: 0,
timeScale: 1,
lastDelta: 0,
lastElapsed: 0
}
};

返回

返回一个新的引擎对象。

名称 类型 说明
engine Engine 引擎对象

clear

Matter.Engine.clear(engine)

清除引擎的pairs和detector。

参数

名称 类型
engine Engine

merge

Matter.Engine.merge(engineA, engineB)

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

参数

名称 类型
engineA Engine
engineB Engine

update

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

模拟时间前进delta毫秒。correction参数是一个可选的数字,它指定要应用于更新的时间纠正因子。这可以帮助改善模拟在delta在更新中变化的情况下的精确性。correction的值定义为delta / lastDelta,即delta / lastDelta的百分比改变。因此值总是1(无纠正),当delta常数(或者当不需要纠正时,这是默认值)。请参阅Time Corrected Verlet文献以了解更多信息。(这个文献正在找)
触发beforeUpdateafterUpdate事件。触发collisionStartcollisionActivecollisionEnd事件。

参数

名称 类型 默认值
engine Engine
delta Number 16.666
correction Number 1

run

Matter.Engine.run(engine) deprecated

弃用:使用*Matter.Runner.run(engine)*代替
Runner.run的弃用了的别名,使用Matter.Runner.run(engine)代替,并且参阅Matter.Runner以获得更多信息。

参数

名称 类型
engine Engine

属性/选项

下面的属性/选项由Matter.Engine.create创建的对象指定,并且可以传递给它作为选项。

constraintIterations

engine.constraintIterations Number

一个整数,它指定每次更新迭代的约束迭代数。值越高,模拟的质量越好,但是性能会受到影响。默认值为2,通常是足够的。
默认值: 2


detector

engine.detector Detector

一个Matter.Detector实例.
默认值: 一个Matter.Detector实例.


enableSleeping

engine.enableSleeping Boolean

指定是否允许Matter.Sleeping模块中的睡眠的标志。睡眠可以提高稳定性和性能,但是往往会影响精确度。
默认值: false


gravity

engine.gravity Object

对于engine.world中的所有bodies,应用重力。


gravity.scale

engine.gravity.scale Object

重力缩放因子。
默认值: 0.001


gravity.x

engine.gravity.x Object

重力x分量。
默认值: 0


gravity.y

engine.gravity.y Object

重力y分量。
默认值: 1


plugin

engine.plugin

用于存储特定插件的属性的一个对象。


positionIterations

engine.positionIterations Number

一个整数,它指定每次更新迭代的位置迭代数。值越高,模拟的质量越好,但是性能会受到影响。
默认值: 6


timing

engine.timing Object

An Object containing properties regarding the timing systems of the engine.
一个包含了与时间系统相关的属性的对象


timing.lastDelta

engine.timing.lastDelta Number

表示在上次引擎更新中使用的delta值的一个整数
默认值: 0


timing.lastElapsed

engine.timing.lastElapsed Number

一个整数,表示上次引擎更新中所用的总执行时间,以毫秒为单位。它是在上次引擎更新[Engine.update]开始,到它结束时所用的时间。
这个值也包括了所有事件处理程序的执行时间。
默认值: 0


timing.timeScale

engine.timing.timeScale Number

一个整数,它指定了所有物体的全局时间缩放因子。值为0将会冻结模拟。值为0.1将会产生一个慢动作效果。值为1.2将会产生一个加速效果。
默认值: 1


timing.timestamp

engine.timing.timestamp Number

一个整数,它指定了当前模拟时间,以毫秒为单位。它在每次引擎更新[Engine.update]时,都会增加给定的delta参数。
默认值: 0


velocityIterations

engine.velocityIterations Number

一个整数,它指定了每次更新执行的速度迭代数。值越高,模拟的质量越好,但是性能会受到影响。
默认值: 4


world

engine.world Composite

通过引擎模拟的所有物体,约束和其他组合的根Matter.Composite实例。
默认值: 一个Matter.Composite实例


broadphase

engine.broadphase Grid [deprecated]

弃用: 被engine.detector替代。
现在是engine.grid的别名。
默认值: 一个Matter.Grid实例


grid

engine.grid Grid [deprecated]

弃用: 被engine.detector替代。
一个Matter.Grid实例。
默认值: 一个Matter.Grid实例


事件

下面是Matter.Engine.create创建的对象发出的事件,并且接收使用Matter.Events.on订阅的对象接收。

afterUpdate

Events.on(engine, “afterUpdate”, callback)

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

回调参数[callback]

名称 类型
event Object

event

一个事件对象

名称 类型 说明
timestamp Number 事件触发的时间戳
source Object 事件源对象
name String 事件的名称

beforeUpdate

Events.on(engine, “beforeUpdate”, callback)

触发在引擎更新之前。

回调参数[callback]

名称 类型
event Object

event

一个事件对象

名称 类型 说明
timestamp Number 事件触发的时间戳
source Object 事件源对象
name String 事件的名称

collisionActive

Events.on(engine, “collisionActive”, callback)

触发在引擎更新之后,提供一个当前tick中所有碰撞的对(如果有)的列表。

回调参数[callback]

名称 类型
event Object

event

一个事件对象

名称 类型 说明
pairs Pair[] 受影响对的列表
timestamp Number 事件触发的时间戳
source Object 事件源对象
name String 事件的名称

collisionEnd

Events.on(engine, “collisionEnd”, callback)

触发在引擎更新之后,提供一个当前tick中所有碰撞结束的对(如果有)的列表。

回调参数[callback]

名称 类型
event Object

event

一个事件对象

名称 类型 说明
pairs Pair[] 受影响对的列表
timestamp Number 事件触发的时间戳
source Object 事件源对象
name String 事件的名称

collisionStart

Events.on(engine, “collisionStart”, callback)

触发在引擎更新之后,提供一个当前tick中所有碰撞开始的对(如果有)的列表。

回调参数[callback]

名称 类型
event Object

event

一个事件对象

名称 类型 说明
pairs Pair[] 受影响对的列表
timestamp Number 事件触发的时间戳
source Object 事件源对象
name String 事件的名称