0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

plunkerで liquidfun その10

Posted at

概要

plunkerで liquidfunやってみた。
ドミノのサンプル見つけたので、やってみた。

写真

image.png

サンプルコード



function TestDominos() {
  var shape = new b2EdgeShape;
  shape.Set(new b2Vec2(-40.0, 0.0), new b2Vec2(40.0, 0.0));
  var bd = new b2BodyDef;
  var b1 = world.CreateBody(bd);
  b1.CreateFixtureFromShape(shape, 0.0);
  shape = new b2PolygonShape ;
  shape.SetAsBoxXY(6.0, 0.25);
  bd = new b2BodyDef;
  bd.position.Set(-1.5, 10.0);
  var ground = world.CreateBody(bd);
  ground.CreateFixtureFromShape(shape, 0.0);
  for (var i = 0; i < 10; ++i) 
  {
    shape = new b2PolygonShape;
    shape.SetAsBoxXY(0.1, 1.0);
    var fd = new b2FixtureDef;
    fd.shape = shape;
    fd.density = 20.0;
    fd.friction = 0.1;
    bd = new b2BodyDef;
    bd.type = b2_dynamicBody;
    bd.position.Set(-6.0 + i, 11.25);
    var body = world.CreateBody(bd);
    body.CreateFixtureFromDef(fd);
  }
  shape = new b2PolygonShape;
  shape.SetAsBoxXYCenterAngle(7.0, 0.25, new b2Vec2(), 0.3);
  bd = new b2BodyDef;
  bd.position.Set(1.0, 6.0);
  ground = world.CreateBody(bd);
  ground.CreateFixtureFromShape(shape, 0.0);
  shape = new b2PolygonShape;
  shape.SetAsBoxXY(0.25, 1.5);
  bd = new b2BodyDef;
  bd.position.Set(-7.0, 4.0);
  var b2 = world.CreateBody(bd);
  b2.CreateFixtureFromShape(shape, 0.0);
  shape = new b2PolygonShape;
  shape.SetAsBoxXY(6, 0.125);
  bd = new b2BodyDef;
  bd.type = b2_dynamicBody;
  bd.position.Set(-0.9, 1.0);
  bd.angle = -0.15;
  var b3 = world.CreateBody(bd);
  b3.CreateFixtureFromShape(shape, 10.0);
  var jd = new b2RevoluteJointDef;
  anchor = new b2Vec2;
  anchor.Set(-2.0, 1.0);
  jd.collideConnected = true;
  jd.InitializeAndCreate(b1, b3, anchor);
  shape = new b2PolygonShape;
  shape.SetAsBoxXY(0.25, 0.25);
  bd = new b2BodyDef;
  bd.type = b2_dynamicBody;
  bd.position.Set(-10.0, 15.0);
  var b4 = world.CreateBody(bd);
  b4.CreateFixtureFromShape(shape, 10.0);
  anchor.Set(-7.0, 15.0);
  jd.InitializeAndCreate(b2, b4, anchor);
  bd = new b2BodyDef;
  bd.type = b2_dynamicBody;
  bd.position.Set(6.5, 3.0);
  var b5 = world.CreateBody(bd);
  shape = new b2PolygonShape;
  fd = new b2FixtureDef;
  fd.shape = shape;
  fd.density = 10.0;
  fd.friction = 0.1;
  shape.SetAsBoxXYCenterAngle(1.0, 0.1, new b2Vec2(0.0, -0.9), 0.0);
  b5.CreateFixtureFromDef(fd);
  shape = new b2PolygonShape;
  fd = new b2FixtureDef;
  fd.shape = shape;
  fd.density = 10.0;
  fd.friction = 0.1;
  shape.SetAsBoxXYCenterAngle(0.1, 1.0, new b2Vec2(-0.9, 0.0), 0.0);
  b5.CreateFixtureFromDef(fd);
  shape = new b2PolygonShape;
  fd = new b2FixtureDef;
  fd.shape = shape;
  fd.density = 10.0;
  fd.friction = 0.1;
  shape.SetAsBoxXYCenterAngle(0.1, 1.0, new b2Vec2(0.9, 0.0), 0.0);
  b5.CreateFixtureFromDef(fd);
  var anchor = new b2Vec2();
  anchor.Set(6.0, 2.0);
  jd.InitializeAndCreate(b1, b5, anchor);
  shape = new b2PolygonShape ;
  shape.SetAsBoxXY(1.0, 0.1);
  bd = new b2BodyDef;
  bd.type = b2_dynamicBody;
  bd.position.Set(6.5, 4.1);
  var b6 = world.CreateBody(bd);
  b6.CreateFixtureFromShape(shape, 30.0);
  anchor = new b2Vec2();
  anchor.Set(7.5, 4.0);
  jd.InitializeAndCreate(b5, b6, anchor);
  shape = new b2PolygonShape;
  shape.SetAsBoxXY(0.1, 1.0);
  bd = new b2BodyDef;
  bd.type = b2_dynamicBody;
  bd.position.Set(7.4, 1.0);
  var b7 = world.CreateBody(bd);
  b7.CreateFixtureFromShape(shape, 10.0);
  var djd = new b2DistanceJointDef;
  djd.bodyA = b3;
  djd.bodyB = b7;
  djd.localAnchorA.Set(6.0, 0.0);
  djd.localAnchorB.Set(0.0, -1.0);
  var d = new b2Vec2();
  b2Vec2.Sub(d, djd.bodyB.GetWorldPoint(djd.localAnchorB), djd.bodyA.GetWorldPoint(djd.localAnchorA));
  djd.length = d.Length();
  world.CreateJoint(djd);
  var radius = 0.2;
  for (var i = 0; i < 4; ++i) 
  {
    var circle = new b2CircleShape;
    bd = new b2BodyDef;
    bd.type = b2_dynamicBody;
    bd.position.Set(5.9 + 2.0 * radius * i, 2.4);
    body = world.CreateBody(bd);
    body.CreateFixtureFromShape(circle, 10.0);
  }
}


以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?