MatterPhysics

.Physics.Matter. MatterPhysics

相位器物质插件提供了在相位器游戏中使用物质JS物理引擎的能力. 与Phaser提供的另一个物理系统Arcade Physics不同,Matter JS是一个全身物理系统. 它的特点是: *刚体 *复式车身 *复合物体 *凹凸外壳 *物理特性(质量,面积,密度等). *恢复原状(弹性和非弹性碰撞) *碰撞(宽相位,中间相位和窄相位) *稳定堆叠和休息 *动量守恒 *摩擦和阻力 * Constraints *重力 *睡眠和静止的身体 *圆角(倒角) *视图(平移,缩放) *碰撞查询(光线投射,区域测试) *时间缩放(慢速,加速) 物质的配置是通过物质世界配置对象来处理的,它可以在 相位器游戏配置,或相位器场景配置.下面是一个基本的例子: ```js physics: { default: 'matter', matter: { enableSleeping: true, gravity: { y: 0 }, debug: { showBody: true, showStaticBody: true } } } ``` 这个类充当相位器场景和物质引擎的单个实例之间的接口. 使用它来访问最常见的功能和帮助功能. 你可以在《物质JS》网站上找到细节,文档和例子:https://brm.io/matter-js/

Constructor

new MatterPhysics(scene)

Since:
  • 3.0.0
Parameters:
Name Type Description
scene Phaser.Scene 拥有这个物质物理学实例的相位器场景.

Members

add :Phaser.Physics.Matter.Factory

Since:
  • 3.0.0
物质工厂的一个例子.这个类提供了许多创建 种类繁多的物理对象,并自动将它们添加到物质世界. 但是,您可以使用这个类来减少游戏中所需的代码量, 使用工厂是完全可选的,应该被视为一种发展援助.它是 完全有可能在不使用物质世界的情况下创建和添加组件.
Type:

axes :MatterJS.AxesFactory

Since:
  • 3.22.0
对 `z matter.axes` 模块的引用. `Matter.Axes` 模块包含创建和操作轴集的方法.
Type:
  • MatterJS.AxesFactory

bodies :MatterJS.BodiesFactory

Since:
  • 3.18.0
对 `Matter.Bodies` 模块的引用. 模块包含创建刚体的工厂方法 使用常用的几何体配置(如矩形,圆形和其他多边形).
Type:
  • MatterJS.BodiesFactory

body :MatterJS.BodyFactory

Since:
  • 3.18.0
对 `z matter.Body` 模块的引用. `Matter.Body` 模块包含创建和操作人体模型的方法. A `Matter.Body` 是一个刚体,可以用一个 `Matter.Engine` 来模拟. 常用车身配置(如矩形,圆形和其他多边形)的工厂可在 `Bodies` 模块中找到.
Type:
  • MatterJS.BodyFactory

bodyBounds :Phaser.Physics.Matter.BodyBounds

Since:
  • 3.22.0
实体边界类的一个实例.此类包含用于获取 围绕一个物理体边界的不同点的世界位置.
Type:

bounds :MatterJS.BoundsFactory

Since:
  • 3.22.0
对 `Matter.Bounds` 模块的引用. 模块包含创建和操作轴对齐边界框的方法(AABB).
Type:
  • MatterJS.BoundsFactory

composite :MatterJS.CompositeFactory

Since:
  • 3.22.0
对 `Matter.Composite` 模块的引用. `Matter.Composite` 模块包含创建和操作复合实体的方法. 复合实体是由 `Matter.Body` , `Matter.Constraint` 和其他 `Matter.Composite` 组成的集合,因此复合实体形成一个树形结构. 重要的是使用本模块中的功能来修改复合材料,而不是直接修改其属性. 请注意, `Matter.World` 对象也是 `Matter.Composite` 的一种类型,因此这里的所有复合方法也可以在 `Matter.World` 上操作.
Type:
  • MatterJS.CompositeFactory

composites :MatterJS.CompositesFactory

Since:
  • 3.22.0
对 `Matter.Composites` 模块的引用. 模块包含创建复合实体的工厂方法 使用常用的配置(如堆栈和链).
Type:
  • MatterJS.CompositesFactory

config :Phaser.Types.Physics.Matter.MatterWorldConfig

Since:
  • 3.0.0
已解析的事件配置对象.
Type:

constraint :MatterJS.ConstraintFactory

Since:
  • 3.22.0
对 `Matter.Constraint` 模块的引用. `Matter.Constraint` 模块包含创建和操作约束的方法. 约束用于指定两个实体(或一个实体和一个固定的世界空间位置)之间必须保持固定的距离. 约束的刚度可以修改,以创建弹簧或弹性.
Type:
  • MatterJS.ConstraintFactory

detector :MatterJS.DetectorFactory

Since:
  • 3.22.0
对 `z matter.detector` 模块的引用. `z matter.detector` 模块包含给定一组对的碰撞检测方法.
Type:
  • MatterJS.DetectorFactory

grid :MatterJS.GridFactory

Since:
  • 3.22.0
对 `Matter.Grid` 模块的引用. 模块包含创建和操作碰撞宽相位网格结构的方法.
Type:
  • MatterJS.GridFactory

pair :MatterJS.PairFactory

Since:
  • 3.22.0
对 `Matter.Pair` 模块的引用. `Matter.Pair` 模块包含创建和操作碰撞对的方法.
Type:
  • MatterJS.PairFactory

pairs :MatterJS.PairsFactory

Since:
  • 3.22.0
对 `Matter.Pairs` 模块的引用. 模块包含创建和操作碰撞对集的方法.
Type:
  • MatterJS.PairsFactory

query :MatterJS.QueryFactory

Since:
  • 3.22.0
对 `Matter.Query` 模块的引用. `Matter.Query` 模块包含执行冲突查询的方法.
Type:
  • MatterJS.QueryFactory

resolver :MatterJS.ResolverFactory

Since:
  • 3.22.0
对 `Matter.Resolver` 模块的引用. `Matter.Resolver` 模块包含解决冲突对的方法.
Type:
  • MatterJS.ResolverFactory

sat :MatterJS.SATFactory

Since:
  • 3.22.0
对 `Matter.SAT` 模块的引用. 模块包含使用分离轴定理检测碰撞的方法.
Type:
  • MatterJS.SATFactory

scene :Phaser.Scene

Since:
  • 3.0.0
拥有这个物质物理学实例的相位器场景
Type:

svg :MatterJS.SvgFactory

Since:
  • 3.22.0
对 `Matter.Svg` 模块的引用. `Matter.Svg` 模块包含将SVG图像转换为矢量点数组的方法. 要使用这个模块,你还需要https://github.com/progers/pathseg
Type:
  • MatterJS.SvgFactory

systems :Phaser.Scenes.Systems

Since:
  • 3.0.0
属于拥有该物质物理实例的场景的场景系统的参考.
Type:

vector :MatterJS.VectorFactory

Since:
  • 3.22.0
对 `Matter.Vector` 模块的引用. `Matter.Vector` 模块包含创建和操作矢量的方法. 矢量是引擎中所有几何相关操作的基础. `Matter.Vector` 对象的形式为 `{ x: 0,y: 0 }` .
Type:
  • MatterJS.VectorFactory

vertices :MatterJS.VerticesFactory

Since:
  • 3.22.0
对 `Matter.Vertices` 模块的引用. 模块包含创建和操作顶点集合的方法. 一组顶点是一个 `Matter.Vector` 的数组,由 `Nutricts.create` 插入附加的索引属性. 一个 `Matter.Body` 维护一组顶点来表示物体的形状(它的凸包).
Type:
  • MatterJS.VerticesFactory

verts :MatterJS.VerticesFactory

Since:
  • 3.14.0
对 `Matter.Vertices` 模块的引用. 模块包含创建和操作顶点集合的方法. 一组顶点是一个 `Matter.Vector` 的数组,由 `Nutricts.create` 插入附加的索引属性. 一个 `Matter.Body` 维护一组顶点来表示物体的形状(它的凸包).
Type:
  • MatterJS.VerticesFactory

world :Phaser.Physics.Matter.World

Since:
  • 3.0.0
物质世界类的一个实例.此类负责更新 物质物理世界,以及处理调试绘图功能.
Type:

Methods

alignBody(body, x, y, align) → {this}

Since:
  • 3.22.0
将物体或物质游戏对象与给定的坐标对齐. 对齐是使用身体边界进行的,它会考虑到一些事情 比如身体比例和旋转. 虽然一个物体具有`重心`属性,但它是以物体的质心为基础的, 不是基于维度的中心.这使得身体很难调整,尤其是如果他们有 旋转或缩放.此方法将根据身体边界和 其质心偏移,以使物体与给定坐标对齐. 例如,如果您想对齐一个主体,使其位于 场景,世界大小为800 x 600: ```javascript this.matter.alignBody(body, 400, 600, Phaser.Display.Align.BOTTOM_CENTER); ``` 你输入400作为x坐标,因为那是世界的中心,输入600作为 y坐标,因为它是世界的基础.
Parameters:
Name Type Description
body Phaser.Types.Physics.Matter.MatterBody 要对齐的正文.
x number 要将正文对齐的水平位置.
y number 与正文对齐的垂直位置.
align number 其中一个 `Phaser.Display.Align` 常量,如 `Phaser.Display.Align.TOP_LEFT` .
Returns:
这个物质物理学实例.
Type
this

applyForce(bodies, force) → {this}

Since:
  • 3.22.0
在物体当前位置向物体施加力,包括产生的扭矩.
Parameters:
Name Type Description
bodies Phaser.Types.Physics.Matter.MatterBody | Array.<Phaser.Types.Physics.Matter.MatterBody> 要更新的单个实体或实体数组.如果是假的,它将使用世界上所有的身体.
force Phaser.Types.Math.Vector2Like 指定要施加的力的向量.
Returns:
这个物质物理学实例.
Type
this

applyForceFromAngle(bodies, speed, angleopt) → {this}

Since:
  • 3.22.0
根据给定的角度和速度对物体施力. 如果没有给定角度,则使用当前身体角度. 根据质量和所需速度,使用非常小的速度值,如0.1.
Parameters:
Name Type Attributes Description
bodies Phaser.Types.Physics.Matter.MatterBody | Array.<Phaser.Types.Physics.Matter.MatterBody> 要更新的单个实体或实体数组.如果是假的,它将使用世界上所有的身体.
speed number 应用于方向力的速度值.
angle number <optional>
施加力的角度,单位为弧度.保持未定义状态以使用当前身体角度.
Returns:
这个物质物理学实例.
Type
this

applyForceFromPosition(bodies, position, speed, angleopt) → {this}

Since:
  • 3.22.0
从给定的世界位置向物体施加力,包括产生的扭矩. 如果没有给定角度,则使用当前身体角度. 根据质量和所需速度,使用非常小的速度值,如0.1.
Parameters:
Name Type Attributes Description
bodies Phaser.Types.Physics.Matter.MatterBody | Array.<Phaser.Types.Physics.Matter.MatterBody> 要更新的单个实体或实体数组.如果是假的,它将使用世界上所有的身体.
position Phaser.Types.Math.Vector2Like 一个向量,它指定要施加力的世界空间位置.
speed number 应用于方向力的速度值.
angle number <optional>
施加力的角度,单位为弧度.保持未定义状态以使用当前身体角度.
Returns:
这个物质物理学实例.
Type
this

containsPoint(body, x, y) → {boolean}

Since:
  • 3.22.0
检查给定实体或实体数组的顶点是否包含给定点. 您可以传入单个实体,也可以传入要检查的实体数组.这种方法将 如果数组中的任何一个实体包含该点,则返回 `true` .如有需要,请参阅 `intersectPoint` 方法 获取相交物体的列表. 该点应提前转化为物质世界坐标系.这发生在 默认为输入指针,但是如果您希望使用来自另一个系统的指针,您可能需要 传递之前先转换它们.
Parameters:
Name Type Description
body Phaser.Types.Physics.Matter.MatterBody | Array.<Phaser.Types.Physics.Matter.MatterBody> 身体,或身体的数组,检查点.
x number 点的水平坐标.
y number 点的垂直坐标.
Returns:
`true` 如果该点在给定的一个物体内,则为 `afus` .
Type
boolean

enableAttractorPlugin() → {this}

Since:
  • 3.0.0
启用物质吸引器插件. 吸引子插件,使得在物体上施加持续的力变得容易. 可以模拟风,重力和磁力等效果. https://github.com/liabru/matter-attractors 如果在物质世界配置中设置了 `plugins.attractors` ,则会自动调用此方法. 然而,你也可以在你的游戏中直接调用它.
Returns:
这个物质物理学实例.
Type
this

enableCollisionEventsPlugin() → {this}

Since:
  • 3.22.0
启用物质碰撞事件插件. 请注意,该插件默认情况下是启用的.所以你只需要称之为 方法,如果你在你的物质世界配置中特别禁用了插件. 您可以通过在物质世界配置中设置 `plugins.collision events:false` 来禁用它. 这个插件在物质上触发了三个新事件.正文: 1. `onCollide` 2. `onCollideEnd` 3. `onCollideActive` 这些事件分别对应于Matter.js事件 `collisionStart` , `collisionActive` 和 `collisionEnd` . 你可以通过Matter收听这些事件.事件或它们也将从物质世界发出. 这个插件也扩展了Matter.具有三种便利功能的机身: `Matter.Body.setOnCollide(callback)` `Matter.Body.setOnCollideEnd(callback)` `Matter.Body.setOnCollideActive(callback)` 您可以通过提供类型(对:Matter)的函数来注册事件回调.成对)= >无效 https://github.com/dxu/matter-collision-events
Returns:
这个物质物理学实例.
Type
this

enableWrapPlugin() → {this}

Since:
  • 3.0.0
启用事件包装插件. 坐标包装插件,自动包装身体的位置,使他们始终停留 在给定的范围内.越过边界后,身体会出现在边界的另一边, 同时保持其速度. https://github.com/liabru/matter-wrap 如果在物质世界配置中设置了 `plugins.wrap` ,则自动调用此方法. 然而,你也可以在你的游戏中直接调用它.
Returns:
这个物质物理学实例.
Type
this

getConfig() → {Phaser.Types.Physics.Matter.MatterWorldConfig}

Since:
  • 3.0.0
当这个类启动并检索最终的物质世界配置时,调用这个内部方法.
Returns:
物质世界配置.
Type
Phaser.Types.Physics.Matter.MatterWorldConfig

getConstraintLength(constraint) → {number}

Since:
  • 3.22.0
返回给定约束的长度,即两点之间的距离.
Parameters:
Name Type Description
constraint MatterJS.ConstraintType 从中获取长度的约束.
Returns:
约束的长度.
Type
number

getMatterBodies(bodiesopt) → {Array.<MatterJS.BodyType>}

Since:
  • 3.22.0
获取一个数组,并返回一个由原始数组中的所有物质体组成的新数组. 例如,在这个方法中传递物质游戏对象,比如一堆物质精灵,会 返回一个包含所有原生物质体对象的数组. 如果 `bodies` 论点是假的,它将返回世界上所有的身体.
Parameters:
Name Type Attributes Description
bodies array <optional>
要从中提取实体的对象数组.如果是假的,它会归还世界上所有的尸体.
Returns:
原生物质体对象的数组.
Type
Array.<MatterJS.BodyType>

intersectBody(body, bodiesopt) → {Array.<Phaser.Types.Physics.Matter.MatterBody>}

Since:
  • 3.22.0
检查给定的物质实体,查看它是否与任何给定的实体相交. 如果没有提供身体,它将检查物质世界中的所有身体.
Parameters:
Name Type Attributes Description
body Phaser.Types.Physics.Matter.MatterBody 目标身体.
bodies Array.<Phaser.Types.Physics.Matter.MatterBody> <optional>
用来检查目标物体的物体数组.如果不提供,它将搜索世界上所有的尸体.
Returns:
顶点与目标物体相交的物体阵列.
Type
Array.<Phaser.Types.Physics.Matter.MatterBody>