Revision: 64723
Updated Code
at September 12, 2013 06:03 by whoppingchill
Updated Code
var PTM_RATIO = 32; var b2World = Box2D.Dynamics.b2World, b2Body = Box2D.Dynamics.b2Body, b2BodyDef = Box2D.Dynamics.b2BodyDef, b2FixtureDef = Box2D.Dynamics.b2FixtureDef, b2CircleShape = Box2D.Collision.Shapes.b2CircleShape, b2Vec2 = Box2D.Common.Math.b2Vec2; var world; var collisionC1B = cc.Scene.extend( { onEnter:function() { this._super(); var yellowBackground = cc.LayerColor.create(cc.c4b(255,255,0,1)); this.addChild(yellowBackground); var layer = new collisionTest(); layer.init(); this.addChild(layer); } }) var collisionTest = cc.LayerColor.extend({ init:function () { this._super(); var s = cc.Director.getInstance().getWinSize(); /* var red = cc.c4f(155, 0, 0, 1); var green = cc.c4f(0, 155, 0, 1); var blue = cc.c4f(0, 0, 155, 1); var yellow = cc.c4f(155, 155, 0, 1); // this.setColor(new cc.Color3B(255, 255, 255)); */ var spriteP1 = this.createSprite(50, 300, this), spriteP2 = this.createSprite(300, 550, this), spriteP3 = this.createSprite(550, 300, this), spriteP4 = this.createSprite(300, 50, this); // create box2dW world var gravity = new b2Vec2(0, 0); this.world = new b2World(gravity); var bodyP1 = this.createBody(spriteP1, this.world), bodyP2 = this.createBody(spriteP2, this.world), bodyP3 = this.createBody(spriteP3, this.world), bodyP4 = this.createBody(spriteP4, this.world); var vel_x = 10, vel_y = 10; bodyP1.SetLinearVelocity(new b2Vec2(vel_x, 0)); bodyP2.SetLinearVelocity(new b2Vec2(0, -vel_y)); bodyP3.SetLinearVelocity(new b2Vec2(-vel_x, 0)); bodyP4.SetLinearVelocity(new b2Vec2(0, vel_y)); this.scheduleUpdate(); return true; }, createBody:function (sprite, world) { var bodyDef = new b2BodyDef(); bodyDef.type = b2Body.b2_dynamicBody; var x = sprite.getPositionX(), y = sprite.getPositionY(); bodyDef.position.Set(x / PTM_RATIO, y / PTM_RATIO); bodyDef.angularDamping = 0; bodyDef.userData = sprite; var body = world.CreateBody(bodyDef); var circle = new b2CircleShape(); circle.m_radius = 32 / PTM_RATIO; var circleDef = new b2FixtureDef(); circleDef.shape = circle; circleDef.density = 5; circleDef.friction = 0.5; circleDef.restitution = 0.5; body.CreateFixture(circleDef); return body; }, createSprite:function (x, y, layer) { var sprite = cc.Sprite.create("assets/ball.png"); sprite.setPosition(cc.p(x, y)); layer.addChild(sprite); return sprite; }, update:function (dt) { var velocityIterations = 6; var positionIterations = 2; this.world.Step(dt, velocityIterations, positionIterations); //Iterate over the bodies in the physics world for (var b = this.world.GetBodyList(); b; b = b.GetNext()) { if (b.GetUserData() != null) { //Synchronize the AtlasSprites position and rotation with the corresponding body var myActor = b.GetUserData(); myActor.setPosition(cc.p(b.GetPosition().x * PTM_RATIO, b.GetPosition().y * PTM_RATIO)); myActor.setRotation(-1 * cc.RADIANS_TO_DEGREES(b.GetAngle())); //console.log(b.GetAngle()); } } } })
Revision: 64722
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 12, 2013 05:49 by whoppingchill
Initial Code
var PTM_RATIO = 32; var b2World = Box2D.Dynamics.b2World, b2Body = Box2D.Dynamics.b2Body, b2BodyDef = Box2D.Dynamics.b2BodyDef, b2FixtureDef = Box2D.Dynamics.b2FixtureDef, b2CircleShape = Box2D.Collision.Shapes.b2CircleShape, b2Vec2 = Box2D.Common.Math.b2Vec2; var world; var collisionC1B = cc.Scene.extend( { onEnter:function() { this._super(); var yellowBackground = cc.LayerColor.create(cc.c4b(255,255,0,1)); this.addChild(yellowBackground); var layer = new collisionTest(); layer.init(); this.addChild(layer); } }) var collisionTest = cc.LayerColor.extend({ init:function () { this._super(); var s = cc.Director.getInstance().getWinSize(); /* var red = cc.c4f(155, 0, 0, 1); var green = cc.c4f(0, 155, 0, 1); var blue = cc.c4f(0, 0, 155, 1); var yellow = cc.c4f(155, 155, 0, 1); // this.setColor(new cc.Color3B(255, 255, 255)); */ var spriteP1 = this.createSprite(50, 300, this), spriteP2 = this.createSprite(300, 550, this), spriteP3 = this.createSprite(550, 300, this), spriteP4 = this.createSprite(300, 50, this); // create box2dW world var gravity = new b2Vec2(0, 0); this.world = new b2World(gravity); var bodyP1 = this.createBody(spriteP1, this.world), bodyP2 = this.createBody(spriteP2, this.world), bodyP3 = this.createBody(spriteP3, this.world), bodyP4 = this.createBody(spriteP4, this.world); var vel_x = 10, vel_y = 10; bodyP1.SetLinearVelocity(new b2Vec2(vel_x, 0)); bodyP2.SetLinearVelocity(new b2Vec2(0, -vel_y)); bodyP3.SetLinearVelocity(new b2Vec2(-vel_x, 0)); bodyP4.SetLinearVelocity(new b2Vec2(0, vel_y)); this.scheduleUpdate(); return true; }, createBody:function (sprite, world) { var bodyDef = new b2BodyDef(); bodyDef.type = b2Body.b2_dynamicBody; var x = sprite.getPositionX(), y = sprite.getPositionY(); bodyDef.position.Set(x / PTM_RATIO, y / PTM_RATIO); bodyDef.angularDamping = 0; bodyDef.userData = sprite; var body = world.CreateBody(bodyDef); var circle = new b2CircleShape(); circle.m_radius = 32 / PTM_RATIO; var circleDef = new b2FixtureDef(); circleDef.shape = circle; circleDef.density = 5; circleDef.friction = 0.5; circleDef.restitution = 0.5; body.CreateFixture(circleDef); return body; }, createSprite:function (x, y, layer) { var sprite = cc.Sprite.create("assets/ball.png"); sprite.setPosition(cc.p(x, y)); layer.addChild(sprite); return sprite; }, update:function (dt) { var velocityIterations = 6; var positionIterations = 2; this.world.Step(dt, velocityIterations, positionIterations); //Iterate over the bodies in the physics world for (var b = this.world.GetBodyList(); b; b = b.GetNext()) { if (b.GetUserData() != null) { //Synchronize the AtlasSprites position and rotation with the corresponding body var myActor = b.GetUserData(); myActor.setPosition(cc.p(b.GetPosition().x * PTM_RATIO, b.GetPosition().y * PTM_RATIO)); myActor.setRotation(-1 * cc.RADIANS_TO_DEGREES(b.GetAngle())); //console.log(b.GetAngle()); } } } })
Initial URL
Initial Description
Simulation of the collision of 4 balls using cocos2d-html5 and box2d.
Initial Title
4 Balls Collision I
Initial Tags
Initial Language
JavaScript