WCAN mini ActionScript Vol.4 で発表したやつ Box2DFlashAS3 (Unknown Quality)
http://un-q.net/2008/01/wcan_mini_actionscript_vol4_bo.html
ピンボールっぽいヤツ
重いから続きへ移動
↓
http://un-q.net/2008/01/wcan_mini_actionscript_vol4_bo.html
ピンボールっぽいヤツ
重いから続きへ移動
↓
このコンテンツには最新のFlashPlayerが必要です
swfクリックして矢印キー右左でフリップが動きます
ソース
http://un-q.net/2008/01/28/swf/box2dsample15.zip
var box:b2BoxDef = new b2BoxDef();
box.extents.Set(40/m_physScale, 5/m_physScale);
box.density = 1;
box.friction = 0.5;
box.restitution = 0.5;
var bd:b2BodyDef = new b2BodyDef();
bd.AddShape(box);
bd.position.Set(50 / m_physScale, 150 / m_physScale);
var body1:b2Body = m_world.CreateBody(bd);
bd = new b2BodyDef();
bd.AddShape(box);
bd.position.Set(150 / m_physScale, 150 / m_physScale);
var body2:b2Body = m_world.CreateBody(bd);
var jd:b2RevoluteJointDef = new b2RevoluteJointDef();
jd.anchorPoint.Set(body1.m_position.x - (30/m_physScale) , body1.m_position.y );
jd.enableLimit = true;
jd.lowerAngle = -40 / (180/Math.PI);
jd.upperAngle = 40 / (180/Math.PI);
jd.enableMotor = true;
jd.motorSpeed = -4;
jd.motorTorque = 10000000;
jd.body1 = body1;
jd.body2 = m_world.m_groundBody;
jointL = m_world.CreateJoint(jd) as b2RevoluteJoint;
jd = new b2RevoluteJointDef()
jd.anchorPoint.Set(body2.m_position.x + (30/m_physScale) , body2.m_position.y );
jd.enableMotor = true;
jd.motorSpeed = 4;
jd.motorTorque = 10000000;
jd.enableLimit = true;
jd.lowerAngle = -40 / (180/Math.PI);
jd.upperAngle = 40 / (180/Math.PI);
jd.body1 = body2;
jd.body2 = m_world.m_groundBody;
jointR = m_world.CreateJoint(jd) as b2RevoluteJoint;
stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent) {
switch(e.keyCode) {
case Keyboard.LEFT:
jointL.SetMotorSpeed(4);
break;
case Keyboard.RIGHT:
jointR.SetMotorSpeed(-4);
break;
default:
break;
}
jointBodyWakeup();
});
stage.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent) {
switch(e.keyCode) {
case Keyboard.LEFT:
jointL.SetMotorSpeed(-4);
break;
case Keyboard.RIGHT:
jointR.SetMotorSpeed(4);
break;
default:
break;
}
jointBodyWakeup();
});
function jointBodyWakeup():void {
jointL.GetBody1().WakeUp();
jointL.GetBody2().WakeUp();
jointR.GetBody1().WakeUp();
jointR.GetBody2().WakeUp();
}
addEventListener(Event.ENTER_FRAME, function(e:Event):void {
trace("r speed : " + jointR.m_motorSpeed);
});
// add ball
var c:b2CircleDef = new b2CircleDef();
c.radius = 10 / m_physScale;
c.density = 1;
c.friction = 0.5;
c.restitution = 0.5;
bd = new b2BodyDef();
bd.AddShape(c);
bd.position.Set(30 / m_physScale, 20 / m_physScale);
var body2:b2Body = m_world.CreateBody(bd);



