MatterJs 介紹

寫在前面

matter.js 是一個(gè)2D的javascript物理引擎,主頁展示了一些demo。
這里介紹如何創(chuàng)建一個(gè)基本的物理世界。

用法

1. html文件中引入

<script src="../build/matter.js"></script>

2. 創(chuàng)建引擎,渲染器,添加世界,生成身體模型。

var Engine=Matter.Engine,
    Render=Matter.Render,
    World=Matter.World,
    Bodies=Matter.Bodies;

Engine是引擎,Render是渲染器,World是表演環(huán)境,Bodies可以用來創(chuàng)建各種形狀的物體。

3. 創(chuàng)建引擎實(shí)例與引擎世界。

var engine=Engine.create(),
    world=engine.world;

4.創(chuàng)建渲染器實(shí)例。

var render=Render.create({
                 engine:engine,
                 element:document.body
           });

render(渲染器)將要渲染的物理引擎是之前所創(chuàng)建的engine,而渲染的對(duì)象是html網(wǎng)頁的body。

5. 運(yùn)行渲染器,運(yùn)行引擎。

Engine.run(engine);
Render.run(render);

Engine和Render是依附于Matter的,而運(yùn)行run()方法的參數(shù)是它們各自所創(chuàng)建的實(shí)例。

至此,在網(wǎng)頁這測(cè)試,如無意外,可看到一個(gè)黑色的canvas。
基本的matter.js世界

6.添加物體

var boxA=Bodies.rectangle(500,170,40,260);

由rectangle可以看出,這將是一個(gè)矩形物體。

7.將物體添加到World世界之中。

World.add(world,boxA);

這時(shí),再刷新,可以看到一個(gè)矩形的物體從生成的地方開始自由落體。


生成了一個(gè)矩形

參數(shù)(500,170,40,260)中,前兩個(gè)是物體坐標(biāo),后兩個(gè)分別是寬度和長度。
需要注意的是,這里的坐標(biāo)系統(tǒng)中,500和170是矩形的中心所在位置,而html的canvas中坐標(biāo)描述的是矩形的左上角。**

8.生成地面。

var ground=Bodies.rectangle(400,600,600,100,{isStatic:true});

需要修改前面的代碼,將ground加入到World中。World.add(world,[boxA,ground]);地面ground同樣是一個(gè)矩形,不過,可以看到它在生成是比boxA多了一個(gè)參數(shù),這個(gè)參數(shù)是個(gè)json對(duì)象,字面上很好理解,將isStatic設(shè)為true,即是靜止的。
這時(shí)候,再刷新頁面,就是這樣的,一個(gè)簡(jiǎn)單的世界,物體遵循自由落體規(guī)律。

純潔的世界

寫在后面

這是一個(gè)簡(jiǎn)單的世界,在這個(gè)基礎(chǔ)上,可以擴(kuò)展出更復(fù)雜的功能。mater.js 還是蠻好用的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容