« WCAN mini AS Vol.4 チェーンのとこサンプル Box2dFlashAS3 | メイン | Box2Dで三角形 »

WCAN mini AS Vol.4 ピンボールっぽいサンプル Box2dFlashAS3

del.icio.us it!   hatena bookmark
WCAN mini ActionScript Vol.4 で発表したやつ Box2DFlashAS3 (Unknown Quality)
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);



トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/265

コメントを投稿

crossreview