Today Davide shows to me this link to a new opensource project regarding Flash.
It’s a “free library for simulating 2D physics in Flash using Verlet integration. It currently features particles, stick & angular constraints, wheels, and surfaces composed of line segments. Designed primarily for games with a goal of speed and ease of use”
I immediately downloaded the available “alpha” release and made a first test..
[attachments docid=646 fields=caption,description force_saveas=”1″ logged_users=”0″]
I don’t know if the project is still alive and which is the developement status, but it looks very promising.
…And here the code used for the example above:
var psystem = new ParticleSystem(); psystem.setDamping(1.0); psystem.setGravity(0.0, 0.4); // cooefficient of restitution psystem.setKfr(0.1); // surface friction for particles psystem.setFriction(0.5); // surfaces var sA = new Surface(new Point(0, 0), new Point(1, 200)); sA.setIsOrientH(false); psystem.addSurface(sA); var s0 = new Surface(new Point(1, 200), new Point(100, 200)); psystem.addSurface(s0); var s2 = new Surface(new Point(220, 170), new Point(300, 200)); psystem.addSurface(s2); var s3 = new Surface(new Point(300, 200), new Point(400, 150)); psystem.addSurface(s3); var sB = new Surface(new Point(399, 150), new Point(399, 0)); sB.setIsOrientH(false); psystem.addSurface(sB); // circle surface var circA = new CircleSurface(170, 220, 70); psystem.addSurface(circA); var leftX = 10; var rightX = 50 var widthX = rightX - leftX; var midX = leftX + (widthX / 2); var topY = 160; // wheels var wheelA = psystem.addWheel(leftX, topY, 10); var wheelB = psystem.addWheel(rightX, topY, 10); wheelA.coeffSlip = 0.0; wheelB.coeffSlip = 0.0; // body var rectA = psystem.addRectangle(new Vector(midX, topY), widthX, 10); // wheel struts var conn1 = psystem.addConstraint(wheelA.wp, rectA.p3); conn1.setRestLength(5); var conn2 = psystem.addConstraint(wheelB.wp, rectA.p2); conn2.setRestLength(5); var conn1a = psystem.addConstraint(wheelA.wp, rectA.p0); conn1a.setRestLength(5); var conn2a = psystem.addConstraint(wheelB.wp, rectA.p1); conn2a.setRestLength(5); psystem.paintSurfaces(); this.onEnterFrame = function() { var keySpeed = 2.0; if(Key.isDown(Key.LEFT)) { wheelA.rp.vs = -keySpeed; wheelB.rp.vs = -keySpeed; } else if(Key.isDown(Key.RIGHT)) { wheelA.rp.vs = keySpeed; wheelB.rp.vs = keySpeed; } else { wheelA.rp.vs = 0; wheelB.rp.vs = 0; } if (Key.isDown(Key.UP)) { if (ang.targetTheta < 2.9) ang.targetTheta += .1; } else { if (ang.targetTheta > angDefault) ang.targetTheta -= .1; } psystem.timeStep(); psystem.paintWheels(); psystem.paintConstraints(); }