matter.js学习笔记(五)--Composites.chain()制造铁索桥

本文通过matter.js的Composites.chain()方法详细讲解如何构建一个由木板和铁索组成的铁索桥,包括源码分析、木板与铁索的创建、桥墩设置以及最后的代码展示和效果呈现。
摘要由CSDN通过智能技术生成

写在前面

Composites.chain()可以将已有的stack物体堆链接在一起,构成一个整体,里面的参数为已有的物体堆stack,链接点距离物体中心的x和y方向的偏移量。

1.源码分析
Composites.chain = function(composite, xOffsetA, yOffsetA, xOffsetB, yOffsetB, options) {
      var bodies = composite.bodies;

      for (var i = 1; i < bodies.length; i++) {
          var bodyA = bodies[i - 1],
              bodyB = bodies[i],
              bodyAHeight = bodyA.bounds.max.y - bodyA.bounds.min.y,
              bodyAWidth = bodyA.bounds.max.x - bodyA.bounds.min.x, 
              bodyBHeight = bodyB.bounds.max.y - bodyB.bounds.min.y,
              bodyBWidth = bodyB.bounds.max.x - bodyB.bounds.min.x;

          var defaults = {
              bodyA: bodyA,
              pointA: { x: bodyAWidth * xOffsetA, y: bodyAHeight * yOffsetA },
              bodyB: bodyB,
              pointB: { x: bodyBWidth * xOffsetB, y: bodyBHeight * yOffsetB }
          };

          var constraint = Common.extend(defaults, options);

          Composite.addConstraint(composite, Constraint.create(constraint));
      }

      composite.label += ' Chain';

      return composite;
  };

参数composite即为传入的物体堆,从第一个物体开始,到倒数第二个物体截止,每个物体和下一个物体链接。
xOffsetA, yOffsetA为每对链接的第一个物体的链接点距离中心位置的偏移百分比,之所以是百分比,是因为pointA: { x: bodyAWidth * xOffsetA, y: bodyAHeight * yOffsetA },pointA的x和y属性为实际的偏移量,是由物体的实际宽度乘以偏移百分比而得到。

2.创造木板,并用铁索链接。
var chains=Composites.stack(666,600,10,1,9,0,function (x, y) {
   
    return Bodies.rectangle(x,y,80,30,{
        chamfer:15
    })
});

参数分析。这里的666和600分别是第一块木板的x和y坐标,10和1分别为10列1行,9和0分别为每块木板之间的列间隙

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值