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的入门小结 的相关文章

  • 隐藏/显示 DIV - 将当前效果更改为淡入淡出

    我目前正在使用网络教程中找到的以下代码来显示 隐藏 DIV 效果很好 但不喜欢这种效果 希望 DIV 淡入 淡出 或者更平滑的东西 目前 DIV 是从右上角增长的 我该如何调整代码来做到这一点 你可以在这里看到它http jsfiddle
  • Vue.JS 2.5.1:未捕获的语法错误:意外的令牌导出

    我试图使用 VueJS 和 Bootstrap Vue 制作一个单选按钮 但是当我制作它时发生了这种情况 我预计这是语法错误 就像它所说的那样 但我似乎找不到任何线索 所以我尝试复制粘贴代码 这是 test radio php 的完整代码
  • Google reCaptcha 永远加载

    我在我的网站上使用 Google 的 reCaptcha 2 0 它曾经运行良好 但自从我向公众开放我的网站并获得了更多用户后 recaptcha 不再适用于大多数用户 它加载得很好 但一旦用户单击 我不是机器人 复选框 它会永远加载并且从
  • Webpack 缺少 CommonsChunk 和 extract-text-webpack-plugin 模块

    我正在跟进Maxime Fabre 的 Webpack 教程 https blog madewithlove be post webpack your bags 我正在尝试获得一个非常简单的 webpack 包 其中包含 1 个入口点和 2
  • jQuery UI sortable 和 contenteditable=true 不能一起工作

    我正在创建一个列表并希望使其项目可排序和可编辑 所以我这样做 ul li span A span li li span B span li li span C span li ul ul list sortable http jsfiddl
  • 拖放区缩略图宽度图像大小

    如何更改上传图像的缩略图大小 我在我的javascript中尝试过thumbnailWidth 350 但是这不会增加缩略图大小 而缩略图只是看起来放大了 如何操作图像缩略图大小 HTML section section
  • 有没有办法监控页面上运行的 JavaScript 函数?

    有没有办法查看页面上正在执行哪些功能 如果我在页面上加载外部脚本 是否可以动态更改函数的功能或阻止其运行 HTML5 http www w3 org TR html5 scripting 1 html establish script bl
  • 夜间值班。单击带有文本的元素

    我遇到问题 无法单击具有某些独特文本的网页元素 我有这样的结构 div class wg wagon type title Text div 我试试这个 click wg wagon type title contains Text 但我有
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • 如何将函数传递给 JavaScript Web Worker

    我想通过一个 或多个 函数传递postMessage 给网络工作者 因为我无法引用常规文件 为了启动 Web Worker 我将一个对象 URL 从 Blob 创建 传递给Worker构造函数 然后我传递一条消息 但到目前为止还没有在消息中
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • 浏览器默认区域设置 - Intl.DateTimeFormat 与 navigator.language

    在对网站进行编码并格式化日期时 我想使用用户在浏览器中设置的区域设置 例如 如果用户定制了他们的chrome settings languages在 Chrome 中设置为非默认值 这就是我想要使用的值 但是 当我在此类浏览器的控制台中运行
  • 由于固定导航,增加了 FancyBox v2 的顶部和底部边距

    我目前正在开发一个网站 该网站将来将具有响应能力 该网站主要由图像组成 单击这些图像会加载到 FancyBox 中 FancyBox v2 现在具有响应能力 因此可以在屏幕尺寸发生变化时重新调整图像等的大小 作为我设计的一部分 我有两个固定
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要

随机推荐

  • 详解前端性能优化之原生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