matter.js的入门小结

2023-10-26

Matter.js 是一个用于创建物理引擎的 JavaScript 库。它提供了一个简单而强大的 API,使得开发者可以创建出真实世界中的物理效果,例如碰撞,重力和摩擦等。

以下是 Matter.js 入门学习笔记:

1.安装和导入 Matter.js

首先,你需要使用 npm 包管理器安装 Matter.js:

npm install matter-js 

然后,在你的 JavaScript 文件中导入 Matter.js:

import * as Matter from 'matter-js'; 

2.创建引擎和世界

创建一个 Matter.js 引擎非常简单,只需调用 Matter.Engine.create() 方法即可。该方法返回一个包含物理引擎的对象,称为引擎。你还需要创建一个 Matter.World 对象,这个对象将会包含所有的物理体。

const engine = Matter.Engine.create();
const world = engine.world; 

3.创建物体

在 Matter.js 中,物体可以是一个静态的对象(例如墙壁),也可以是一个动态的对象(例如球)。你可以使用 Matter.Bodies 来创建物体。

例如,要创建一个圆形物体,可以使用 Matter.Bodies.circle() 方法:

const circle = Matter.Bodies.circle(x, y, radius); 

其中,x 和 y 分别是物体的初始坐标,radius 是物体的半径。

4.将物体添加到世界中

要将物体添加到世界中,可以使用 Matter.World.add() 方法:

Matter.World.add(world, circle); 

其中,world 是世界对象,circle 是要添加的物体。

5.更新引擎和世界

在 Matter.js 中,引擎和世界都需要被更新才能够运行。你可以在游戏循环中调用 Matter.Engine.update() 方法来更新引擎和世界。

Matter.Engine.update(engine); 

6.渲染物体

Matter.js 不包含默认的渲染引擎,你可以选择使用任何你喜欢的渲染引擎来渲染物体。

例如,你可以使用 Canvas 渲染引擎,使用下面的代码在画布上渲染物体:

const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');

function render() {ctx.clearRect(0, 0, canvas.width, canvas.height);for (let body of Matter.Composite.allBodies(world)) {ctx.beginPath();ctx.arc(body.position.x, body.position.y, body.circleRadius, 0, Math.PI * 2);ctx.fillStyle = '#ffffff';ctx.fill();ctx.closePath();}requestAnimationFrame(render);
}

requestAnimationFrame(render); 

在上面的代码中,我们首先获取了一个 canvas 元素,并获取了它的 2D 上下文。然后,我们在游戏循环中遍历世界中的所有物体,并使用 ctx.arc() 方法在画布上绘制圆

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matter.js的入门小结 的相关文章

  • 使用 jQuery 更改父元素样式

    我有下一个 html 设置 div class one div class two a href class three Click a div div 我想更改具有类的元素的背景颜色 one当我点击元素时 three使用 jQuery 这
  • 带换行符的 React/Momentjs 日期格式

    我有一个日期字符串 我想对其进行格式化 其中数字位于月份下 Jul 6 我尝试了几种不同的方法来添加新行
  • 如何使用 HTML 5 实现类似 gmail 的文件上传/附件

    我记得一些支持 Ajax 之类的选项 无回发世界 文件上传 隐藏的 iframe 使用 flash 对象 尽管我仍然好奇为什么使用 SWF 以及它提供什么优势 然而 通过查看博客 HTML 5 似乎很有前途 我尝试了一些小示例 它确实有效
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • 使用 Jest 和 React JS TestUtils 测试表单

    我有一个带有 3 个单选按钮的表单 如下所示 假名
  • 如何判断一个网页是否支持jquery?

    确定网页是否启用 jquery 的最佳方法是什么 如果这是确定它的最佳方法 则使用 jquery 本身 if jQuery jquery object exists jQuery 并不神奇 它本质上只是一个大对象 您可以像检查任何其他对象一
  • 使用 Firefox 插件 sdk 的 nsISocketTransportService

    我正在尝试使用 Firefox 来读取 SSH 横幅 IE 当您最初连接到 SSH 服务器时 服务器会向您发送其横幅 标识服务器软件 并且您向 SSH 服务器发送您的横幅 标识您的客户端软件 为此 我使用以下 URL 中的示例 firefo
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • JS 保留以零结尾的小数[重复]

    这个问题在这里已经有答案了 在JavaScript中 是否可以 锁定 十进制数 以保留以零结尾的 浮点数 例如 我有 2 个不同的数字 如下所示 伪代码 let a 1 0 let b 1 00 a b true should be fal
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 如何在 Web 服务器上设置 gzip 压缩?

    我有一个嵌入式网络服务器 总共有 2 兆空间 通常 您使用 gzip 文件对客户端有利 但这会节省我们在服务器上的空间 我读到你可以只 gzip js 文件并将其保存在服务器上 我在 IIS 上测试过 但没有任何运气 为了使这项工作成功 我
  • 如果没有 /// 标签,TypeScript 的“将 JavaScript 输出合并到文件中”选项无法推断出正确的脚本顺序

    我正在开发一个使用 将 JavaScript 输出合并到文件中 选项的 TypeScript 解决方案 我经常引用另一个文件中定义的项目 例如 In MyBaseClass ts export class MyBaseClass In My
  • 如何动态调整jqgrid到当前窗口大小?

    如何动态调整jqgrid到当前窗口大小 基于javascript jQuery 最好的例子在这里 TinyMCE 去 http www tinymce com tryit full php http www tinymce com tryi
  • 如何在画布上所有其他内容后面绘制图像? [复制]

    这个问题在这里已经有答案了 我有一块画布 我想用drawImage在画布上当前内容后面绘制图像 由于画布上已经有内容 我正在使用字面上的画布来创建包含图像的画布 因此我无法真正先绘制图像 所以我无法使用drawImage在我呈现其余内容之前
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
  • MongoDB:javascript执行失败:无法在 src/mongo/shell/collection.js 保存 DBQuery 对象

    在 MongoDb 中 当我尝试修改集合中的现有文档时 它会生成以下异常 javascript execution failed can t save a DBQuery object at src mongo shell collecti
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样

随机推荐

  • 详解前端性能优化之原生JS实现图片懒加载效果(通过IntersectionObserver内置构造函数实现)

    相信你作为一名用户 使用一款app 在首次打开页面时卡顿超过3秒时就会有退出的想法 所以我们在日常开发中 通常需要使用一些手段实现对性能的优化 来使得页面加载更快 用户体验更好 这其中有许多方式 其中最常用的无非是按需加载了 今天就带大家重
  • 硬盘配置raid5时碰见unconfiguration bad问题记录

    环境 长城服务器 昆仑bios 问题描述 系统装了四个SSD盘 但在BIOS配置raid的 Driver Manager 驱动识别界面中四块硬盘中的三块都是坏的 显示unconfiguration bad 并且在后面的raid配置界面中识别
  • MES系统质量追溯功能,到底在追什么?

    今天我们就来分析一下生产企业的产品质量追溯问题 以及MES系统中产品追溯的应用 我们知道 生产质量管理是MES系统中十分重要的一部分 因为长期以来 车间质量管理部门希望车间的加工水平持续保持在最佳状态 对加工过程产生的质量问题能得到及时的发
  • 河北某日报移动端python数据采集 eds加密新闻内容

    写在最前面 此移动端采用EDS 的js加密 核心的js加密代码 贴在 个人爱好尝试破解 仅提供技术交流用 目标地址 抓取的详情页地址 var e 4Qjir8b019EIXH0FBzIJIuElne7uRYd6AB7qOIQg TdtJrw
  • Java日期计算溢出问题

    先看下面的代码 SimpleDateFormat fmt new SimpleDateFormat yyyy MM dd final Date beginDate fmt parse 2013 8 1 for int i 0 i lt 30
  • 【Docker】ERROR: Could not find a version that satisfies the requirement pytest==5.0.1

    1 背景 背景参考 Docker elasticsearch 监控工具 elasticsearch HQ lcc lcc soft es elasticsearch HQ 3 5 12 pip install r requirements
  • Java解决Oracle中ORA-12542:TNS无监听程序ORA-12542:TNS:监听程序无法识别连接符中请求的服务

    环境 WINDOWS2003 ORACLE 10G 第一次安装完ORACLE后使用SQLPLUS链接都是没问题的 但重启服务器就报了异常 ORA 12541 TNS 无监听程序 这里肯定是监听器出了问题 但没有做任何变动 只是重启了服务器
  • 音频特征(2):时域图、频谱图、语谱图(时频谱图)

    文章目录 时域和频域 1 概述 2 时域 波形和频域 用几张对比图来区分 2 1 时域和频域 2 2 区分 时频谱图 语谱图 傅里叶变换的典型用途是将信号分解成频率谱 显示与频率对应的幅值大小 时域和频域 1 概述 1 什么是信号的时域和频
  • Zabbix实践(四) zabbix的通知推送解决方案

    zabbix 监控建立起来后 可以使用zabbix自带的推送接口 进行消息的推送 本节 说明一下采用OneAlert产品作为 zabbix的下游 进行消息推送 OneAlert 是一款集成了各种推送和接收消息的软件 个人版本免费 其他版本
  • TypeScript-初识

    引言 TypeScript 静态类检查器 提供了 JavaScript 的所有功能 并且在这些功能之上添加了一层 TypeScript 的类型系统 TypeScript 会在执行前检查程序是否有错误 并根据值的种类进行检查 一 定义属性 c
  • 分析压缩感知

    1 引言 信号采样是模拟的物理世界通向数字的信息世界之必备手段 多年来 指导信号采样的理论基础一直是着名的Nyquist 采样定理 定理指出 只有当采样速率达到信号带宽的两倍以上时 才能由采样信号精确重建原始信号 可见 带宽是Nyquist
  • 跳坑:由于找不到vcruntime140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题。

    一 问题背景 在安装MySQL服务运行初始化命令时 出现弹窗报错 由于找不到vcruntime140 1 dll 无法继续执行代码 重新安装程序可能会解决此问题 二 原因分析 综合网上问答数据分析 此处报错原因时因为缺少了动态链接库 vcr
  • 使用Picgo自动上传本地图片教程(typora+gitee图床)

    使用Picgo自动上传本地图片教程 typora 注意 2022 3 25日起gitee不能用于图床了 gitee加了防盗链 所有图片的都访问不了了 大家请选择其他的图床存放图片 本文章配置gitee图床教程已不可用 获取Picgo 官网
  • 企业网三层架构

    文章目录 三层架构 WLAN 无线网络天生的缺陷 链路聚合技术 原理 ensp配置 VRRP 工作过程 配置 三层架构 园区 工厂 政府机关 写字楼 校园 公园等 这些公共场所内为实现数据的互通所搭建的网络都可以称为园区网 不同的园区网搭建
  • AI人体抠像之灰度图如何还原成原图——以Face++人体抠像为例

    Face 人体抠像API V1版本图片返回结果为灰度图 但是并不是可以直接用的结果 我们需要的是保留人体部分的像素数据 背景根据需要可以自由替换的 让我们来看看如何才能还原 原理 一 V1版本返回值可还原成灰度图 颜色只有黑白灰三种颜色 颜
  • 鸿蒙系统开源

    华为的鸿蒙系统可能一直是听说过没见过的系统 在今天也终于正式宣布开源了 鸿蒙系统托管在了国内的 Gitee 上 也就是码云上面 其地址如下 https openharmony gitee com 在它的托管主页上有一个项目介绍 我这里复制过
  • 华为笔试题:坐标移动

    include
  • Spring集成Hadoop实践

    在Spring中集成Hadoop流程梳理 1 maven添加spring data hadoop依赖
  • 关于mysql一直显示Processing configuration..

    安装3遍一直显示Processing configuration 最后重启解决的 有相同问题的可以试试
  • matter.js的入门小结

    Matter js 是一个用于创建物理引擎的 JavaScript 库 它提供了一个简单而强大的 API 使得开发者可以创建出真实世界中的物理效果 例如碰撞 重力和摩擦等 以下是 Matter js 入门学习笔记 1 安装和导入 Matte