1. 程式人生 > >Matter-JS 入門教程

Matter-JS 入門教程

目錄

Matter-JS 簡 介

Matter-JS 下 載

Hello World


Matter-JS 簡 介

1、Matter.js is a 2D physics engine for the web (matter.js 是一個用於 web 的二維物理引擎)

Matter.js 官網地址:http://brm.io/matter-js/index.html

GitHub 開源地址:https://github.com/liabru/matter-js

官方demo演示地址:http://brm.io/matter-js/demo/#mixed       ——點選頁面頂部中間下拉框可以切換演示示例——

官方deom原始碼地址:https://github.com/liabru/matter-js/tree/master/examples

codepen 線上編輯演示地址:https://codepen.io/collection/Fuagy/#

官方 API 文件地址:http://brm.io/matter-js/docs/

2、目前最新版 Matter.js 是 2018-06-11 更新的  0.14.2 版本。檢視歷史版本更新日誌。

3、Matter.js 支援特性如下:

剛體(Rigid bodies) 複合體(Compound bodies) 複合材料(Composite bodies)
凹面和凸面(Concave and convex hulls) 物理特性(質量、面積、密度等) 恢復原狀(彈性和非彈性碰撞)
碰撞(粗略階段、中間階段、精細階段) 穩定的堆疊和靜止 動量守恆(  Conservation of momentum)
摩擦力和阻力(Friction and resistance) 事件監聽(Events) 約束(Constraints)
重力(Gravity) 睡眠和靜態物體 圓角(倒角)Rounded corners (chamfering)
檢視(平移、縮放) Views (translate, zoom) 碰撞查詢(射線追蹤、區域測試) 時間縮放(減速、加速)
Canvas 渲染器(支援向量和紋理) MatterTools 工具(建立、測試和除錯) 世界狀態序列化,需要 resurrect.js
跨瀏覽器(Chrome、Firefox、Safari、IE8+)和 Node.js 支援 相容移動端(觸控、響應) 原生 JS 實現

Matter-JS 下 載

1、Download the edge build (master) or get a stable release and include the script in your web page(需要下載最新版的,點選"edge build (master)";需要下載穩定版的,點選"stable release"。下載完成後,在頁面中像如下引用即可):

<script src="matter.js" type="text/javascript"></script>

2、You can also install using the package managers Bower and NPM(或者使用包管理器Bower和NPM進行安裝):

bower install matter-js
npm install matter-js

3、下載的方式多種多樣,但歸根到底就是獲取 matter-js/build/matter.js 與 matter-js/build/matter.min.js 檔案,前者是未壓縮版,後者是壓縮版,建議學校階段使用前者,部署階段使用後者。可以將整個專案下載下來,然後在 build 目錄下可以找到它們,也可以像如下所示,直接將此檔案儲存下來。

4、開啟 matter-js/build/matter.js 與 matter-js/build/matter.min.js 檔案 後,點選右上角"Raw"按鈕,然後 Ctrl + S 儲存下來即可。如下所示為下載儲存好的 matterJS 庫(其中的_0.14.2是修改後的名字),壓縮版和未壓縮版都下載下來了,這和將整個專案下載下來然後找到裡面的這兩個檔案,其內容完全是一樣的。

Hello World

學習一門新的東西的時候,本人經驗是,細節之處日後慢慢研究深入,專案得先跑起來再說。把之前下載好的 js 檔案現在引入 Html 檔案中,編碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>Matter-JS</title>
    <script src="../js/matter_0.14.2.js"></script>
</head>
<body>
<script type="text/javascript">
    var Engine = Matter.Engine;//引擎.引擎模組包含建立和操作引擎的方法
    var Render = Matter.Render;//基於HTML5畫布的渲染器
    var World = Matter.World;//演出舞臺. Matter.js 中任何的物體都需要一個舞臺/容器,而存放這些物體的地方,則稱之為World(世界)
    var Bodies = Matter.Bodies;//用於建立各種形狀的物體,物體必須新增到Wolrd中,然後由引擎執行世界

    var engine = Engine.create();
    //render(渲染器)將要渲染的物理引擎是上面的engine,而渲染的物件是html網頁的body
    var render = Render.create({element: document.body, engine: engine});

    /**
     * Bodies.rectangle = function(x, y, width, height, options)
     * x,y 分別表示矩形中心點的座標,座標的原點(0,0)在 Canvas(畫布)的左上角
     * width,height 分別表示矩形的寬和高
     * options:描述矩形的引數,是一個 json 物件
     * @type {body}
     */
    var boxA = Bodies.rectangle(200, 0, 80, 80);
    var boxB = Bodies.rectangle(450, 100, 80, 80);
    //將isStatic設為true,表示物體靜止
    var ground = Bodies.rectangle(400, 510, 810, 60, {isStatic: true});
    World.add(engine.world, [boxA, boxB, ground]);// 將所有物體新增到世界中
    Engine.run(engine);//執行引擎
    Render.run(render);//執行渲染器
</script>
</body>
</html>

對於 Matter.js 的使用細節,以及官網的各種案例將在後續文章中進行深入瞭解。