Factory

.Physics.Matter. Factory

物质工厂负责快速创建各种不同类型的 身体,约束和游戏对象,并将其添加到物理世界中. 您可以在场景中使用 `add` 访问工厂: ```javascript this.matter.add.rectangle(x, y, width, height); ``` 工厂的使用是可选的.它创建的所有对象也可以被创建 直接通过您自己的代码或构造函数.它是作为保持你的 代码简洁.

Constructor

new Factory(world)

Since:
  • 3.0.0
Parameters:
Name Type Description
world Phaser.Physics.Matter.World 这个工厂增加的物质世界.

Members

scene :Phaser.Scene

Since:
  • 3.0.0
这个工厂物质世界所属的场景.
Type:

sys :Phaser.Scenes.Systems

Since:
  • 3.0.0
场景参考.物质物理学实例所属的系统.
Type:

world :Phaser.Physics.Matter.World

Since:
  • 3.0.0
这个工厂增加的物质世界.
Type:

Methods

car(x, y, width, height, wheelSize) → {MatterJS.CompositeType}

Since:
  • 3.0.0
使用简单的车身设置和约束创建复合.
Parameters:
Name Type Description
x number 汽车在世界上的水平位置.
y number 汽车在世界上的垂直位置.
width number 汽车底盘的宽度.
height number 汽车底盘的高度.
wheelSize number 汽车车轮的半径.
Returns:
一种新型复合车身.
Type
MatterJS.CompositeType

chain(composite, xOffsetA, yOffsetA, xOffsetB, yOffsetB, optionsopt) → {MatterJS.CompositeType}

Since:
  • 3.0.0
使用约束将给定组合中的所有实体链接在一起.
Parameters:
Name Type Attributes Description
composite MatterJS.CompositeType 所有物体都将按顺序连接在一起的复合物.
xOffsetA number BodyA约束的水平偏移量.这是基于身体大小的百分比,而不是世界位置.
yOffsetA number BodyA约束的垂直偏移量.这是基于身体大小的百分比,而不是世界位置.
xOffsetB number BodyB约束的水平偏移量.这是基于身体大小的百分比,而不是世界位置.
yOffsetB number BodyB约束的垂直偏移量.这是基于身体大小的百分比,而不是世界位置.
options Phaser.Types.Physics.Matter.MatterConstraintConfig <optional>
一个可选的约束配置对象,用于在创建时设置初始约束属性.
Returns:
传递给此方法的原始复合.
Type
MatterJS.CompositeType

circle(x, y, radius, optionsopt, maxSidesopt) → {MatterJS.BodyType}

Since:
  • 3.0.0
创建一个新的刚性圆形实体,并将其添加到世界中.
Parameters:
Name Type Attributes Description
x number 身体中心的X坐标.
y number 身体中心的Y坐标.
radius number 圆的半径.
options Phaser.Types.Physics.Matter.MatterBodyConfig <optional>
一个可选的几何体配置对象,用于在创建时设置初始几何体属性.
maxSides number <optional>
多边形逼近此圆时使用的最大边数.
Returns:
一个物质JS体.
Type
MatterJS.BodyType

constraint(bodyA, bodyB, lengthopt, stiffnessopt, optionsopt) → {MatterJS.ConstraintType}

Since:
  • 3.0.0
约束(或关节)用于指定必须保持固定距离 在两个物体之间,或者一个物体和一个固定的世界空间位置之间. 约束的刚度可以修改,以创建弹簧或弹性. 要模拟旋转约束(或销连接),请设置 `长度:0` 和 高 `stiffness` 值(例如. `0.7` 或以上). 如果约束不稳定,尝试降低 `stiffness` 值和/或增加 事件配置中的 `constraintIterations` . 对于复合实体,约束必须应用于父实体,而不是其某个部分.
Parameters:
Name Type Attributes Default Description
bodyA MatterJS.BodyType 此约束附加到的第一个可能的 `Body` .
bodyB MatterJS.BodyType 该约束所附加的第二个可能的 `Body` .
length number <optional>
指定约束的目标静止长度的数字.如果没有给定,它将在 `Constraint.create` 中从 `constraint.bodyA` 和 `constraint.bodyB` 的初始位置自动计算.
stiffness number <optional>
1 指定约束刚度的数字,即.它返回到静止状态的速率.值 `1` 意味着约束应该非常严格.值 `0.2` 表示约束充当软弹簧.
options Phaser.Types.Physics.Matter.MatterConstraintConfig <optional>
一个可选的约束配置对象,用于在创建时设置初始约束属性.
Returns:
一个物质JS约束.
Type
MatterJS.ConstraintType

destroy()

Since:
  • 3.5.0
摧毁这个工厂.

fromJSON(x, y, config, optionsopt, addToWorldopt) → {MatterJS.BodyType}

Since:
  • 3.22.0
使用JSON文件提供的物理数据创建实体. 数据文件应该加载为JSON: ```javascript preload () { this.load.json('ninjas', 'assets/ninjas.json); } create () { const ninjaShapes = this.cache.json.get('ninjas'); this.matter.add.fromJSON(400, 300, ninjaShapes.shinobi); } ``` 不要将整个JSON文件传递给此方法,而是传递其中包含的一个形状. 如果您传入一个 `options` 对象,其中的任何设置都将覆盖配置对象中的设置. JSON文件的结构如下: ```text { 'generator_info': // The name of the application that created the JSON data 'shapeName': { 'type': // The type of body 'label': // Optional body label 'vertices': // An array, or an array of arrays, containing the vertex data in x/y object pairs } } ``` 在撰写本文时,只有Phaser Physics Tracer应用程序以这种格式导出.
Parameters:
Name Type Attributes Default Description
x number 身体的X坐标.
y number 身体的Y坐标.
config any JSON物理数据.
options Phaser.Types.Physics.Matter.MatterBodyConfig <optional>
一个可选的几何体配置对象,用于在创建时设置初始几何体属性.
addToWorld boolean <optional>
true 新创造的身体应该立即加入世界吗?
Returns:
一个物质JS体.
Type
MatterJS.BodyType

fromPhysicsEditor(x, y, config, optionsopt, addToWorldopt) → {MatterJS.BodyType}

Since:
  • 3.22.0
使用从应用程序物理编辑器(https://www.codeandweb.com/physicseditor)导出的数据创建实体 物理标识符文件应该作为JSON加载: ```javascript preload () { this.load.json('vehicles', 'assets/vehicles.json); } create () { const vehicleShapes = this.cache.json.get('vehicles'); this.matter.add.fromPhysicsEditor(400, 300, vehicleShapes.truck); } ``` 不要将整个JSON文件传递给此方法,而是传递其中包含的一个形状. 如果您传入一个 `options` 对象,其中的任何设置都将覆盖PhysicsEditor配置对象中的设置.
Parameters:
Name Type Attributes Default Description
x number 身体的水平世界位置.
y number 身体的垂直世界位置.
config any 从PhysicsEditor导出的JSON数据.
options Phaser.Types.Physics.Matter.MatterBodyConfig <optional>
一个可选的几何体配置对象,用于在创建时设置初始几何体属性.
addToWorld boolean <optional>
true 新创造的身体应该立即加入世界吗?
Returns:
一个物质JS体.
Type
MatterJS.BodyType

fromSVG(x, y, xml, scaleopt, optionsopt, addToWorldopt) → {MatterJS.BodyType}

Since:
  • 3.22.0
使用SVG文件中的路径数据创建正文. SVG解析需要来自https://github.com/progers/pathseg的路径分段聚合文件 SVG文件应该以XML的形式加载,因为这种方法需要提取的能力 从中获取路径数据.即.: ```javascript preload () { this.load.xml('face', 'assets/face.svg); } create () { this.matter.add.fromSVG(400, 300, this.cache.xml.get('face')); } ```
Parameters:
Name Type Attributes Default Description
x number 身体的X坐标.
y number 身体的Y坐标.
xml object SVG路径数据.
scale number <optional>
1 创建后,按此数量缩放顶点.
options Phaser.Types.Physics.Matter.MatterBodyConfig <optional>
一个可选的几何体配置对象,用于在创建时设置初始几何体属性.
addToWorld boolean <optional>
true 新创造的身体应该立即加入世界吗?
Returns:
一个物质JS体.
Type
MatterJS.BodyType

fromVertices(x, y, vertexSets, optionsopt, flagInternalopt, removeCollinearopt, minimumAreaopt) → {MatterJS.BodyType}

Since:
  • 3.0.0
使用提供的顶点(或包含多组顶点的数组)创建实体,并将其添加到世界中. 如果顶点是凸的,它们将按照提供的方式通过.否则,如果顶点是凹的,就会被分解.注意,这个过程不能保证支持复杂的顶点集.有洞的.
Parameters:
Name Type Attributes Default Description
x number 身体中心的X坐标.
y number 身体中心的Y坐标.
vertexSets string | array 顶点数据.路径字符串或顶点数组.
options Phaser.Types.Physics.Matter.MatterBodyConfig <optional>
一个可选的几何体配置对象,用于在创建时设置初始几何体属性.
flagInternal boolean <optional>
false 标记内部边缘(重合的零件边缘)
removeCollinear number <optional>
0.01 Matter.js是否会丢弃共线边(提高性能).
minimumArea number <optional>
10 在分解过程中,丢弃面积小于此值的零件.
Returns:
一个物质JS体.
Type
MatterJS.BodyType

gameObject(gameObject, optionsopt, addToWorldopt) → {Phaser.Physics.Matter.Image|Phaser.Physics.Matter.Sprite|Phaser.GameObjects.GameObject}

Since:
  • 3.3.0
获取一个现有的游戏对象,并将所有的物质成分注入其中. 这使您能够直接从 这个游戏对象. 您也可以传入物质体配置对象或物质体实例 链接到这个游戏对象.
Parameters:
Name Type Attributes Default Description
gameObject Phaser.GameObjects.GameObject 向其中注入物质成分的游戏对象.
options Phaser.Types.Physics.Matter.MatterBodyConfig | MatterJS.Body <optional>
物质体配置对象或物质体的实例.
addToWorld boolean <optional>
true 把这个物质体加入世界?
Returns:
将物质成分注入其中的游戏对象.
Type
Phaser.Physics.Matter.Image | Phaser.Physics.Matter.Sprite | Phaser.GameObjects.GameObject

image(x, y, key, frameopt, optionsopt) → {Phaser.Physics.Matter.Image}

Since:
  • 3.0.0
创建一个物质物理图像游戏对象. 图像是一个轻量级的游戏对象,用于在游戏中显示静态图像, 例如徽标,背景,风景或其他非动画元素.图像可以有输入 事件和物理体,或补间,着色或滚动.一个 图像和精灵是你不能动画图像,因为他们没有动画组件.
Parameters: