0
0
Fork 0
mirror of https://github.com/liabru/matter-js.git synced 2024-11-27 09:50:52 -05:00

improved Example.chains using pin constraint

This commit is contained in:
liabru 2017-05-03 21:31:29 +01:00
parent 0e15099479
commit 9d2f0ffb5b

View file

@ -39,7 +39,7 @@ Example.chains = function() {
// add bodies // add bodies
var group = Body.nextGroup(true); var group = Body.nextGroup(true);
var ropeA = Composites.stack(200, 100, 4, 2, 10, 10, function(x, y) { var ropeA = Composites.stack(100, 50, 8, 1, 10, 10, function(x, y) {
return Bodies.rectangle(x, y, 50, 20, { collisionFilter: { group: group } }); return Bodies.rectangle(x, y, 50, 20, { collisionFilter: { group: group } });
}); });
@ -47,15 +47,13 @@ Example.chains = function() {
Composite.add(ropeA, Constraint.create({ Composite.add(ropeA, Constraint.create({
bodyB: ropeA.bodies[0], bodyB: ropeA.bodies[0],
pointB: { x: -25, y: 0 }, pointB: { x: -25, y: 0 },
pointA: { x: 200, y: 100 }, pointA: { x: ropeA.bodies[0].position.x, y: ropeA.bodies[0].position.y },
stiffness: 0.5 stiffness: 0.5
})); }));
World.add(world, ropeA);
group = Body.nextGroup(true); group = Body.nextGroup(true);
var ropeB = Composites.stack(500, 100, 5, 2, 10, 10, function(x, y) { var ropeB = Composites.stack(350, 50, 10, 1, 10, 10, function(x, y) {
return Bodies.circle(x, y, 20, { collisionFilter: { group: group } }); return Bodies.circle(x, y, 20, { collisionFilter: { group: group } });
}); });
@ -63,11 +61,30 @@ Example.chains = function() {
Composite.add(ropeB, Constraint.create({ Composite.add(ropeB, Constraint.create({
bodyB: ropeB.bodies[0], bodyB: ropeB.bodies[0],
pointB: { x: -20, y: 0 }, pointB: { x: -20, y: 0 },
pointA: { x: 500, y: 100 }, pointA: { x: ropeB.bodies[0].position.x, y: ropeB.bodies[0].position.y },
stiffness: 0.5 stiffness: 0.5
})); }));
World.add(world, ropeB); group = Body.nextGroup(true);
var ropeC = Composites.stack(600, 50, 13, 1, 10, 10, function(x, y) {
return Bodies.rectangle(x - 20, y, 50, 20, { collisionFilter: { group: group }, chamfer: 5 });
});
Composites.chain(ropeC, 0.3, 0, -0.3, 0, { stiffness: 1, length: 0 });
Composite.add(ropeC, Constraint.create({
bodyB: ropeC.bodies[0],
pointB: { x: -20, y: 0 },
pointA: { x: ropeC.bodies[0].position.x, y: ropeC.bodies[0].position.y },
stiffness: 0.5
}));
World.add(world, [
ropeA,
ropeB,
ropeC,
Bodies.rectangle(400, 600, 1200, 50.5, { isStatic: true })
]);
// add mouse control // add mouse control
var mouse = Mouse.create(render.canvas), var mouse = Mouse.create(render.canvas),