用途
该技能面向在 Phaser 4 中使用 Matter.js 物理引擎的开发场景,提供完整的刚体物理模拟能力,包括刚体、复合体、约束、复合物、传感器、碰撞过滤、指针拖拽、瓦片地图集成以及调试渲染。
主要能力
- 场景插件
this.matter:提供add工厂用于创建刚体、约束与游戏对象;world管理引擎、边界与调试渲染;并可直接访问 Matter.js 的body、bodies、composite、composites、constraint模块。 - 世界配置:通过
physics.matter配置重力、边界(setBounds)、睡眠(enableSleeping)、迭代次数、时间缩放、自动更新与调试等。 - 物理游戏对象:
Phaser.Physics.Matter.Sprite(支持动画)、Phaser.Physics.Matter.Image(无动画、更轻量),以及MatterGameObject可为任意现有游戏对象注入物理组件。 - 组件方法:速度、力与推力、弹力、摩擦(动态/空气/静态)、质量与密度、重力忽略、传感器、静态、睡眠、碰撞分类与回调、身体形状设置、变换同步。
- 约束:支持刚性关节、弹簧、销钉、世界约束与偏移锚点。
- 复合物:堆叠、图像堆叠、链条、网格、软体,以及牛顿摆、汽车、金字塔等预构建复合物。
- 复合体:将多个形状合并为单一刚体,部件共享位置、角度与速度。
- 睡眠系统:静止刚体可进入睡眠以跳过模拟,支持睡眠阈值与事件。
- 传感器:检测碰撞但不产生物理反应,适用于触发区域、拾取物与检测区域。
- 碰撞分类与过滤:基于位掩码的 category、mask 与 group,支持批量设置。
- 碰撞回调:支持按刚体设置
setOnCollide、setOnCollideEnd、setOnCollideActive、setOnCollideWith,以及游戏对象级事件。 - 瓦片地图集成:通过
convertTilemapLayer为碰撞瓦片创建 MatterTileBody,支持 Tiled 碰撞形状。 - 复杂形状:从顶点字符串或顶点集创建刚体,凹形自动分解。
- 指针约束:
mouseSpring支持鼠标/触摸拖拽,可禁用、忽略特定刚体、停止拖拽与销毁,并提供拖拽事件。 - 查询:点相交、点包含、矩形区域、射线检测与刚体重叠查询。
使用方式
在游戏配置中启用 Matter 物理:
const config = {
type: Phaser.AUTO,
width: 800,
height: 600,
physics: {
default: 'matter',
matter: {
gravity: { y: 1 },
enableSleeping: true,
debug: true,
setBounds: true
}
},
scene: GameScene
};
在场景中创建物理对象:
this.player = this.matter.add.sprite(400, 200, 'player');
this.player.setBounce(0.5);
this.player.setFriction(0.05);
this.matter.add.rectangle(400, 580, 800, 40, { isStatic: true });
this.matter.add.mouseSpring();
适用场景
适用于需要完整刚体物理模拟的 2D 游戏开发,例如平台跳跃、物理益智、载具模拟、软体与链条效果、拖拽交互、传感器触发区域以及瓦片地图碰撞等。
限制
资料未提供关于收费、价格、平台兼容性、性能上限或具体版本要求的信息。部分内容(如查询部分末尾)在资料中不完整,暂未提供完整细节。