Matter-JS Composites 混合材料 · 下

目录

Composites

car 汽车

newtonsCradle 牛顿摆


Composites

1、多个刚体通过约束组合在一起,称为复合体。复合体对外当作一个刚体,复合体的物理属性是通过所包含的刚体的属性综合计算出来的。

2、Matter.Composite 模块包含用于创建和处理复合体的方法。

3、Matter.Composites 模块提供了几种特别的复合材料,如链:Composites.chain、牛顿摆:Composites.newtonsCradle、软体:Composites.softBody、汽车:Composites.car 、堆叠:Composites.stack、网格:mesh、金字塔:pyramid。

4、Matter.Composites 模块提供了几种特别的复合材料,如链:Composites.chain、牛顿摆:Composites.newtonsCradle、软体:Composites.softBody、汽车:Composites.car 、堆叠:Composites.stack、网格:mesh、金字塔:pyramid。

5、本文主要讲解 

car 汽车

官网API:http://brm.io/matter-js/docs/classes/Composites.html#method_car

car 创建包含车身和约束的简单汽车设置的组合。由一个矩形和两个圆形构成,矩形作为汽车的主题,会对4个角进行圆角处理,两个圆形作为轮子。

    /**
     * Creates a composite with simple car setup of bodies and constraints.
     * @param {number} xx          汽车中心点的x坐标
     * @param {number} yy          汽车中心点的y坐标
     * @param {number} width       汽车主体(矩形)的宽度
     * @param {number} height      汽车主体(矩形)的高度
     * @param {number} wheelSize   汽车轮子(圆形)的半径
     * @return {composite} A new composite car body
     */
    Composites.car = function(xx, yy, width, height, wheelSize)



    
    
    Matter-JS
    
    
    
    



提示:上面使用的是 matter.js 0.14.2 版本,亲测 0.12.0 版本时样式不是这样的,而且当两辆车重叠时会有明显的抖动。

官网Demo:http://brm.io/matter-js/demo/#car

newtonsCradle 牛顿摆

官网API:http://brm.io/matter-js/docs/classes/Composites.html#method_newtonsCradle

newtonsCradle 方法源码如下,依次创建 number 个圆形,然后对圆形附加约束挂在约束点上。

    /**
     * Creates a composite with a Newton's Cradle setup of bodies and constraints.
     * @method newtonsCradle
     * @param {number} xx       第一个摆的悬挂点的x坐标
     * @param {number} yy       第一个摆的悬挂点的y坐标
     * @param {number} number   摆的总个数
     * @param {number} size     摆球的半径
     * @param {number} length   摆的悬挂点到摆球圆形的距离,即绳子的长度
     * @return {composite} A new composite newtonsCradle body
     */
    Composites.newtonsCradle = function(xx, yy, number, size, length) {
        var newtonsCradle = Composite.create({ label: 'Newtons Cradle' });
        for (var i = 0; i < number; i++) {
            var separation = 1.9,
                circle = Bodies.circle(xx + i * (size * separation), yy + length, size, 
                            { inertia: Infinity, restitution: 1, friction: 0, frictionAir: 0.0001, slop: 1 }),
                constraint = Constraint.create({ pointA: { x: xx + i * (size * separation), y: yy }, bodyB: circle });
            Composite.addBody(newtonsCradle, circle);
            Composite.addConstraint(newtonsCradle, constraint);
        }
        return newtonsCradle;
    };

使用示例如下:




    
    
    Matter-JS
    
    
    
    



官网demo:http://brm.io/matter-js/demo/#newtonsCradle

 

 

 

你可能感兴趣的:(MatterJS)