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?

More than 3 years have passed since last update.

plunkerでvue その51

Posted at

#概要

plunkerでvueやってみた。
box2dwebやってみた。

#写真

無題.jpg

#サンプルコード


new Vue({
  el: '#app',
 data: {
  },
	mounted () {
		this.init()
    this.createWorld()
    this.loop()
	},
	methods: {
		init () {
			this.canvas = document.getElementById('c')
      this.canvas.width = 456
      this.canvas.height = 456
      this.b2Vec2 = Box2D.Common.Math.b2Vec2
	    this.b2BodyDef = Box2D.Dynamics.b2BodyDef
	    this.b2Body = Box2D.Dynamics.b2Body
	    this.b2FixtureDef = Box2D.Dynamics.b2FixtureDef
	    this.b2Fixture = Box2D.Dynamics.b2Fixture
	    this.b2DistanceJointDef = Box2D.Dynamics.Joints.b2DistanceJointDef
	    this.b2RevoluteJointDef = Box2D.Dynamics.Joints.b2RevoluteJointDef
	    this.b2World = Box2D.Dynamics.b2World
	    this.b2MassData = Box2D.Collision.Shapes.b2MassData
	    this.b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape
	    this.b2CircleShape = Box2D.Collision.Shapes.b2CircleShape
	    this.b2DebugDraw = Box2D.Dynamics.b2DebugDraw
    },
    createWorld() {
      this.world = new this.b2World(new this.b2Vec2(0, 10), true);
      this.debugDraw = new this.b2DebugDraw();
      this.debugDraw.SetSprite(this.canvas.getContext("2d"));
      this.debugDraw.SetDrawScale(200);
      this.debugDraw.SetFillAlpha(0.9);
      this.debugDraw.SetLineThickness(1.0);
      this.debugDraw.SetFlags(this.b2DebugDraw.e_shapeBit | this.b2DebugDraw.e_jointBit);
      this.world.SetDebugDraw(this.debugDraw);
      this.bodyDef = new this.b2BodyDef;
      this.bodyDef.linearDamping = 0.1;
      this.fixDef = new this.b2FixtureDef;
      this.fixDef.restitution = 1;
      this.createWall(0, 0, 2, 0.1);
      this.createWall(0, 0, 0.1, 2);
      this.createWall(2, 0, 0.1, 2);
      this.createWall(0, 2, 2.1, 0.1);
      this.fixDef.shape = new this.b2CircleShape(0.1);  
      this.fixDef.density = 0.4;
      this.fixDef.friction = 0.9;
      this.fixDef.restitution = 0.9;
      this.bodyDef.type = this.b2Body.b2_dynamicBody;
      this.bodyDef.position = new this.b2Vec2(1.5, 1.0);
      this.bodyDef.linearVelocity = new this.b2Vec2(-5.0, -5.0);
      this.world.CreateBody(this.bodyDef).CreateFixture(this.fixDef);
    },
    createWall(x, y, w, h) {
    	this.bodyDef.type = this.b2Body.b2_staticBody;
    	this.bodyDef.position.x = x + w / 2;
	    this.bodyDef.position.y = y + h / 2;
    	this.fixDef.shape = new Box2D.Collision.Shapes.b2PolygonShape;
    	this.fixDef.shape.SetAsBox(w / 2, h / 2);  
    	this.world.CreateBody(this.bodyDef).CreateFixture(this.fixDef);
    },
    loop() {
    	this.world.Step(1 / 60, 10, 10);
    	this.world.DrawDebugData();
    	this.world.ClearForces();
    	setTimeout(this.loop, 15);
    },
  }
});




#成果物

以上。

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?